#include <iostream>存在,但是我收到错误:标识符“cout”未定义。为什么?</的iostream>

时间:2012-11-03 11:03:13

标签: c++ visual-studio com visual-studio-2012

我通过书籍学习C ++和COM。 在IDE MS Visual Studio 2012中,我创建了新的空C ++项目,并向其中添加了一些现有文件。我的CPP文件包含#include<iostream>行,但在编辑器中我收到了这样的消息:

  

错误:标识符“cout”未定义

  

错误:标识符“endl”未定义

屏幕:

enter image description here

为什么会这样?

4 个答案:

答案 0 :(得分:38)

您需要指定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()

的范围

答案 1 :(得分:6)

cout位于std命名空间中,您应在代码中使用std::cout。 并且您不应在头文件中添加using namespace std;,将代码与std命名空间混合是不好的,尤其是不要将其添加到头文件中。

答案 2 :(得分:6)

您可以在#include <iostream>之后的开头添加:

using namespace std;

答案 3 :(得分:2)

问题是您缺少std名称空间。 cout在std名称空间中。
在#include

之后添加using namespace std;