Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
maxm
60 / 32 / 8
Регистрация: 17.07.2014
Сообщений: 438
#1

DevC не видит команд cout, cin - C++

03.08.2014, 20:17. Просмотров 1527. Ответов 17
Метки нет (Все метки)

Не видит команд сout, cin. Как подключить библиотеку?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.08.2014, 20:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос DevC не видит команд cout, cin (C++):

Cout cin - C++
Ребят, мы пишем cout << .... и cin >> .... Как называются эти операторы << и >>? И что они делают?

Cin cout - C++
записать через сin cout printf ("a=", i); scanf ("%f", &a);

cin cout - C++
Как выводить через cin cout а не через printf. А то получается ерунда #include <stdio.h> #include <locale.h> #include <string> ...

Cin и cout не компилируется - C++
Начал изучать С++, и возникли проблемы с cin и cout, пишет Undefined symbol, хотя std прописан. Если пишу std::cin то выдает 'cout' is...

Перегрузка cin/cout - C++
Надо перегрузить операторы для некого класса. У меня есть два базовых класса, в одном 2 поля, в другом 3 поля. В производном классе(от етих...

Не работают cin и cout - C++
Компилю на С++. Впервые. Использую Borland C++ Builder 6.0 Прочитал много разных самоучителей, энциклопедий по С++ Создаю приложение...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
23407 / 15398 / 4536
Регистрация: 22.10.2011
Сообщений: 27,377
Записей в блоге: 4
03.08.2014, 20:35 #2
Показывай код и ошибки. В дефолтном проекте все уже прекрасно подключено, и можно использовать эти потоки...
maxm
60 / 32 / 8
Регистрация: 17.07.2014
Сообщений: 438
03.08.2014, 20:39  [ТС] #3
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <stdio.h>
 
 
int main(int argc, char** argv) {
    
 
cout << "Enter name";
    
    return 0;
}
Не видик команды cout, выдает снизу на панели 'cout' was not declared in this scope
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
23407 / 15398 / 4536
Регистрация: 22.10.2011
Сообщений: 27,377
Записей в блоге: 4
03.08.2014, 20:41 #4
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
 
using namespace std; // эта строка тоже есть в дефолтном проекте, зачем ты ее выкинул?
 
int main(int argc, char** argv) {
    
 
cout << "Enter name";
    
    return 0;
}
maxm
60 / 32 / 8
Регистрация: 17.07.2014
Сообщений: 438
03.08.2014, 20:47  [ТС] #5
Цитата Сообщение от UI Посмотреть сообщение
// эта строка тоже есть в дефолтном проекте, зачем ты ее выкинул?
за умолчанием ее не выдает, вот какая картина после создания нового проэкта:
C++
1
2
3
4
5
6
7
#include <iostream>
 
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
 
int main(int argc, char** argv) {
    return 0;
}
gru74ik
Модератор
Эксперт CЭксперт С++
4156 / 1782 / 197
Регистрация: 20.02.2013
Сообщений: 4,906
Записей в блоге: 21
03.08.2014, 20:55 #6
В общем, тебе надо писать либо так:
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
 
using namespace std;
 
int main()
{
    cout << "Hello world!" << endl;
    return 0;
}
либо так:
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
 
using std::cout;
using std::endl;
 
int main()
{
    cout << "Hello world!" << endl;
    return 0;
}
либо так:
C++
1
2
3
4
5
6
7
#include <iostream>
 
int main()
{
    std::cout << "Hello world!" << std::endl;
    return 0;
}
И всё, что имеет отношение к стандартной библиотеке, прописывать так же:

C++
1
2
3
std::cin
std::string
std::vector
и т.п.

Либо, как было указано выше, с помощью директивы using.
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
23407 / 15398 / 4536
Регистрация: 22.10.2011
Сообщений: 27,377
Записей в блоге: 4
03.08.2014, 21:03 #7
Цитата Сообщение от maxm Посмотреть сообщение
вот какая картина после создания нового проэкта:
Мне сказки-то не надо рассказывать. Видео записать о создании нового С++ проекта в DevC++? Создается вот такой файл:
C++
1
2
3
4
5
6
7
8
9
10
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
int main(int argc, char *argv[])
{
    system("PAUSE");
    return EXIT_SUCCESS;
}
maxm
60 / 32 / 8
Регистрация: 17.07.2014
Сообщений: 438
03.08.2014, 21:26  [ТС] #8
Видимо, версия лагучая, потому что код прожекта на с++ стандардтный выглядит так:
C++
1
2
3
4
5
6
7
#include <iostream>
 
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
 
int main(int argc, char** argv) {
    return 0;
}
Если там фишку нажать "Создать хелло ворлд", то они выдают так:
C++
1
2
3
4
5
6
#include <iostream>
 
int main(int argc, char** argv) {
    std::cout << "Hello world!\n";
    return 0;
}
gru74ik
Модератор
Эксперт CЭксперт С++
4156 / 1782 / 197
Регистрация: 20.02.2013
Сообщений: 4,906
Записей в блоге: 21
04.08.2014, 00:01 #9
cout - это console output (консольный вывод), оператор работы с стандартным потоком вывода (в качестве такового чаще всего выступает монитор). Для того чтобы он работал, надо указать, что это тот самый cout, который описан в стандартной библиотеке как объект класса ostream. Для этого ты используешь так называемую операцию разрешения контекста (те самые идущие подряд два двоеточия) и три буквочки std. Либо директиву using.
Вот тут так и сделано:
C++
1
2
3
4
5
6
#include <iostream>
 
int main(int argc, char** argv) {
    std::cout << "Hello world!\n";
    return 0;
}
Можешь сам посмотреть операция разрешения контекста C++ и ещё директива using C++.

Добавлено через 32 минуты
Или вот у Страуструпа объяснение:
Кликните здесь для просмотра всего текста
Цитата Сообщение от Бьярне Страуструп
4.9.4. Область видимости
Объявление вводит имя в область видимости (scope); это значит, что имя можно
использовать лишь в ограниченной части программы. Для имени, объявленного
в теле функции (его часто называют локальным), область видимости простирается
от точки объявления до конца содержащего это объявление блока. Блоком
называется фрагмент кода, ограниченного с двух сторон фигурными скобками
(открывающей и закрывающей).
Имя называется глобальным, если оно объявлено вне функций, классов
(глава 10) и пространств имен (§8.2). Область видимости глобального имени
простирается от точки объявления до конца файла, содержащего это объявление.
Объявление имени внутри блока скрывает совпадающее имя, объявленное во внешнем
объемлющем блоке, или глобальное имя. Таким образом, внутри блока имя можно
переопределить с тем, чтобы оно ссылалось на новую сущность. По выходе из блока
имя восстанавливает свой прежний смысл. Например:
C++
1
2
3
4
5
6
7
8
9
10
11
12
int х;          // глобальная переменная х 
void f() 
{ 
    int х;      // локальная х скрывает глобальную х 
    х = 1;      // присваивание локальной х 
    { 
        int х;  // скрывает первую локальную х 
        х = 2;  // присваивание второй локальной х 
    } 
    х = 3;      // присваивание первой локальной х 
} 
int* р = &х;    // взять адрес глобальной х
Сокрытие имен неизбежно в больших программах. В то же время,
программист может и не заметить, что какое-то имя оказалось скрыто. Из-за того, что
такие ошибки редки и нерегулярны, их трудно обнаруживать. Следовательно,
сокрытие имен желательно минимизировать. Хотите проблем — используйте i или х
в качестве глобальных имен, или в качестве локальных в функциях большого
размера.
Доступ к скрытому глобальному имени осуществляется с помощью операции ::
(операция разрешения области видимости — scope resolution operator). Например:
C++
1
2
3
4
5
6
7
8
int x; 
void f2() 
{ 
    int x=l; // скрывает глобальную х 
    ::x=2;   // присваивание глобальной х 
    x=2;     // присваивание локальной х
    //...
}
He существует способа обращения к скрытому локальному имени.
Область видимости имени начинается в точке объявления, точнее, сразу после
декларатора, но перед инициализирующим выражением. Из этого следует, что имя
можно использовать в качестве инициализатора самого себя. Например:
C++
1
2
3
4
5
6
int x; 
void f3() 
{ 
    int x = х;  // извращение: инициализируем х ее собственным 
                // (непроинициализированным) значением 
}
Это не запрещено, просто глупо. Хороший компилятор предупредит о попытке
чтения неинициализированной переменной (§5.9[9]).
В принципе, в блоке можно обращаться с помощью одного и того же имени
к разным переменным, даже не используя операции ::. Вот пример на эту тему:
C++
1
2
3
4
5
6
7
int x=11; 
void f4() 
{ 
    int у = x;  // используется глобальная х: у=11 
    int x = 22; 
    у = x;      // используется локальная х: у=22 
}
Считается, что имена аргументов функции объявлены в самом внешнем блоке,
относящемся к функции, так что следующий пример
C++
1
2
3
4
void f5(int x) 
{ 
    int x; // error (ошибка) 
}
компилируется с ошибкой, ибо имя х дважды определено в одной и той же
области видимости. Отнесение такой ситуации к ошибочным позволяет избегать
коварных ошибок.


P.S. Ещё можешь у него же ознакомиться с параграфом Пространства имён (§ 8.2 ).

Добавлено через 7 минут
P.P.S. Хотя, на мой взгляд, у Праты гораздо понятнее объяснено (см. Стивен Прата "Язык программирования С++. Лекции и упражнения", 2013, 6-е издание, глава 2, стр. 57)
Сто500
Заблокирован
04.08.2014, 00:40 #10
maxm,

Не по теме:

Видимо, версия лагучая
Dev-CPP вообще очень глючная вещь. Это вы не пробовали под WinAPI/COM/OLE в ней писать. С ее линуксовским компилятором она очень плохо под винду годится.

Лучше возьмите Visual C++ Express 2008 или 2010, лучше 8, лагов меньше.

alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
04.08.2014, 01:22 #11
Цитата Сообщение от gru74ik Посмотреть сообщение
cout - это console output (консольный вывод)
Б.Страуструп "Программирование: принципы и практика использования С++."
Миниатюры
DevC   не видит команд cout, cin  
Иванов_Андрей
10 / 10 / 0
Регистрация: 23.07.2014
Сообщений: 52
04.08.2014, 02:36 #12
Цитата Сообщение от Сто500 Посмотреть сообщение
Лучше возьмите Visual C++ Express 2008 или 2010
Лучше тогда в блокноте подобные вещи писать и компилировать ручками. Для запоминания синтаксиса - само-то. Ну и разобраться можно что к чему.
Сто500
Заблокирован
04.08.2014, 02:45 #13
Лучше тогда в блокноте подобные вещи писать и компилировать ручками.
Смысл?
Если компилятор все равно тот же, что и в Dev-Cpp.
А вот если это cl.exe из Visual Studio, то блокнот, Notepad++ или вообще что-то свое может быть удобно, так как меньше лишних функций и стало быть нагрузка на комп.
Этот же cl.exe и приложения CLR (.NET) тоже компилирует.
Mr.X
Эксперт С++
3049 / 1694 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
04.08.2014, 06:20 #14
Цитата Сообщение от alsav22 Посмотреть сообщение
Цитата Сообщение от gru74ik Посмотреть сообщение
cout - это console output (консольный вывод)
Б.Страуструп "Программирование: принципы и практика использования С++."
Миниатюры
Честно говоря, меня поражает манера некоторых товарищей излагать свои фантазии, догадки и предположения с таким видом, будто они это в книжке вычитали, при этом еще и поругивая авторов непрочитанных ими книжек.

Добавлено через 5 минут
Вот только мне интересно - такой человек сам не отличает в своей голове реальных знаний от фантазий, или намеренно вводит окружающих в заблуждение?
gru74ik
Модератор
Эксперт CЭксперт С++
4156 / 1782 / 197
Регистрация: 20.02.2013
Сообщений: 4,906
Записей в блоге: 21
04.08.2014, 07:52 #15
Цитата Сообщение от alsav22 Посмотреть сообщение
Цитата Сообщение от gru74ik Посмотреть сообщение
cout - это console output (консольный вывод)
Б.Страуструп "Программирование: принципы и практика использования С++.":
Имя cout произносится как “see-out”, но является аббревиатурой “character output stream” (“поток вывода символов”).
Признаю, был неправ. Благодарю за поправку.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.08.2014, 07:52
Привет! Вот еще темы с ответами:

перезагрузка cin, cout - C++
Помогите корректно перезагрузить эти два оператора! #include &lt;iostream&gt; using namespace std; class Fractions{ public: ...

НЕ находит cin cout - C++
Вроде бы подключил заголовочные файлы. Почему не находит cin и cout они же вроде бы должны быть в iostream #include &lt;stdafx.h&gt; ...

операторы cin, cout - C++
Здравствуйте! Написала элементарную программу: #include &lt;iostream&gt; using namespace std; int main() { cout&lt;&lt; &quot;Введите...

Ошибка на cout и cin - C++
немогу понять в чем ошибка, есть код программы, вроде бы все правильно написано, но возможно я где-то допустил ошибку, но почему-то в упор...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
04.08.2014, 07:52
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru