#include <iostream> существует, но я получаю сообщение об ошибке: идентификатор "cout" равен undefined. Зачем?

Я изучаю С++ и COM через книги. В среде IDE MS Visual Studio 2012 я создал новый пустой проект С++ и добавил к нему некоторые существующие файлы. Мой файл CPP содержит строку #include<iostream>, но в редакторе я получил такие сообщения:

Ошибка: идентификатор "cout" undefined

конец

Ошибка: идентификатор "endl" равен undefined

Экран:

enter image description here

Почему это происходит?

Ответы

Ответ 1

Вам нужно указать пространство имен std:::

std::cout << .... << std::endl;;

В качестве альтернативы вы можете использовать директиву using:

using std::cout;
using std::endl;

cout << .... << endl;

Я должен добавить, что вам следует избегать этих директив using в заголовках, так как код, содержащий их, также будет содержать символы, помещенные в глобальное пространство имен. Ограничить использование директив небольшими областями, например

#include <iostream>

inline void foo()
{
  using std::cout;
  using std::endl;
  cout << "Hello world" << endl;
}

Здесь директива using применима только к области foo().

Ответ 2

cout находится в пространстве имен std, вы должны использовать std::cout в своем коде. И вы не должны добавлять using namespace std; в свой заголовочный файл, это плохо для смешивания вашего кода с пространством имен std, особенно не добавляйте его в заголовочный файл.

Ответ 3

Вы можете добавить это в начале после #include <iostream>:

using namespace std;