76

我正在处理我的编程任务的“驱动程序”部分,我不断收到这个荒谬的错误:

错误 C2065:“cout”:未声明的标识符

我什至尝试过使用std::cout但我收到另一个错误消息:IntelliSense: namespace "std" has no member "cout"当我声明使用命名空间 std,包括 iostream + 我什至尝试使用ostream

我知道这是一个标准的菜鸟问题,但这让我很困惑,我是新手(意思是:我以前编程过......)

#include <iostream>
using namespace std;

int main () {
    cout << "hey" << endl;
 return 0;
}

我正在使用 Visual Studio 2010 并运行 Windows 7。所有 .h 文件都有“使用命名空间 std”并包括 iostream 和 ostream。

4

26 回答 26

67

在 Visual Studio 中,您必须#include "stdafx.h"并且是cpp 文件的第一个包含。例如:

这些都行不通

#include <iostream>
using namespace std;
int main () {
    cout << "hey" << endl;
    return 0;
}




#include <iostream>
#include "stdafx.h"
using namespace std;
int main () {
    cout << "hey" << endl;
    return 0;
}

这会做。

#include "stdafx.h"
#include <iostream>
using namespace std;
int main () {
    cout << "hey" << endl;
    return 0;
}

这是关于 stdafx.h 标头功能的一个很好的答案。

于 2014-10-22T21:19:47.457 回答
48

编写此代码,它完美运行..

#include "stdafx.h"
#include <iostream>

using namespace std;

int main()
{
 cout<<"Hello World!";
  return 0;
}
于 2011-02-21T18:18:16.390 回答
11

我在 Visual Studio C++ 2010 上遇到了同样的问题。很容易修复。在 main() 函数上方,只需将标准包含行替换为下面的行,但在包含前使用井号符号。

# include "stdafx.h"
# include <iostream>
using  namespace std;
于 2011-07-04T08:02:25.517 回答
10

include "stdafx.h"问题

cout但是除非您包含,否则您不能使用using namespace std

如果你没有包含命名空间 std 你必须写std::cout而不是简单cout

于 2013-09-16T17:18:59.133 回答
4

我已经看到,如果你使用

#include <iostream.h>

那么你会遇到问题。

如果你使用

#include <iostream>  

(注意 - 没有 .h)

那么您将不会遇到您提到的问题。

于 2010-11-10T00:19:48.590 回答
4

如果你开始了一个需要这#include "stdafx.h"条线的项目,把它放在第一位。

于 2010-11-26T06:03:31.070 回答
3

如果您包含的唯一文件是 iostream 并且它仍然显示未定义,那么可能 iostream 不包含它应该包含的内容。您的项目中是否有可能有一个空文件巧合地命名为“iostream”?

于 2009-12-08T18:05:18.647 回答
3

当我将 .c 文件扩展名与 C++ 代码一起使用时,我已经看到类似的事情发生。除此之外,我必须同意每个人关于错误安装的看法。如果您尝试使用早期版本的 VS 编译项目,它是否有效?试试 VC++ Express 2008。它在 msdn 上免费。

于 2009-12-08T21:09:20.740 回答
3

下面的代码可以使用 gcc 为我正确编译和运行。尝试复制/粘贴它,看看它是否有效。

#include <iostream>
using namespace std;

int bob (int a) { cout << "hey" << endl; return 0; };

int main () {
    int a = 1;
    bob(a);
    return 0;
}
于 2009-12-08T17:51:54.397 回答
3

就我而言,这样一个愚蠢的解决方案:

// Example a
#include <iostream>    
#include "stdafx.h"

以上是按照示例 a 进行的,当我将其更改为类似于下面的示例 b 时...

// Example b
#include "stdafx.h"
#include <iostream>  

我的代码像魅力一样编译。试试看,保证有效。

于 2017-09-05T16:09:31.733 回答
2

我有 VS2010、Beta 1 和 Beta 2(一个在我的工作机器上,一个在家里),而且我用过std很多都没有问题。尝试输入:

std::

看看 Intellisense 是否能给你任何东西。如果它为您提供了通常的东西(abortabsacos等),除了cout,那么,真是令人费解。在这种情况下,一定要查看你的 C++ 头文件。

除此之外,我只想添加以确保您正在运行一个常规的空项目(不是 CLR,Intellisense 已瘫痪),并且您实际上至少尝试过一次构建该项目。正如我在评论中提到的,VS2010 会在您添加include;后解析文件。可能是某些东西卡住了解析器,并且没有cout立即“找到”。(在这种情况下,尝试重新启动 VS 可能吗?)

于 2009-12-08T18:38:09.017 回答
2

从头开始一个 ms c++ 2010 项目时我遇到了同样的问题 - 我删除了 ms 生成的所有头文件,但使用了:

#include "stdafx.h"
#include <iostream>
using namespace std;

int main() {
   cout << "hey" << endl;
   return 0;
}

我必须包括在内stdafx.h,因为它导致没有它的错误。

于 2010-11-01T22:38:17.797 回答
2

在你开始这个程序之前,去掉所有的代码,在 main 里面做一个简单的 hello world。仅包括 iostream 和 using namespace std;。一点一点地添加它以找到您的问题。

cout << "hi" << endl;
于 2009-12-08T17:42:22.273 回答
2

拿代码

#include <iostream>
using namespace std;

从您的 .cpp 文件中,创建一个头文件并将其放入 .h 文件中。然后加

#include "whatever your header file is named.h"

在 .cpp 代码的顶部。然后再次运行它。

于 2010-12-29T00:24:39.520 回答
1

试试看,它会起作用的。我在 Windows XP、Visual Studio 2010 Express 中检查了它。

#include "stdafx.h"
#include <iostream>
using namespace std;

void main( ) 
{
   int i = 0;
   cout << "Enter a number: ";
   cin >> i;
}
于 2010-11-14T09:58:37.803 回答
1

创建项目时,您没有正确设置“使用预编译头文件”。在 properties->C/C++->precompiled headers 中更改它。

于 2012-12-16T23:52:57.523 回答
1

你确定它编译为 C++ 吗?检查您的文件名(它应该以 结尾.cpp)。检查您的项目设置。

您的程序没有任何问题,并且coutnamespace std. 您安装的 VS 2010 Beta 2 有缺陷,我不认为这只是您的安装。

我认为 VS 2010 还没有为 C++ 做好准备。标准的“Hello, World”程序在 Beta 1 上不起作用。我只是尝试创建一个测试 Win32 控制台应用程序,生成的test.cpp文件没有main()功能。

我对 VS 2010 有一种非常非常糟糕的感觉。

于 2009-12-08T18:12:47.293 回答
1

只需使用printf

stdio.hstdafx.h头文件中包含printf.

于 2014-11-18T11:36:18.207 回答
1

在 Visual Studio 中,使用“stdafx.h”下的所有头文件。

于 2013-09-01T13:02:44.947 回答
1

通过在代码顶部插入以下行来包含 std 库:

using namespace std;
于 2017-02-27T09:16:22.133 回答
0

我刚刚安装了 vs 2010 并试图让一个几乎相同的程序工作后遇到了这个错误。

我以前在 unix 风格的盒子上做过 vanilla C 编码,决定自己玩一下。

我尝试的第一个程序是:

#include "stdafx.h"


int _tmain(int argc, _TCHAR* argv[])
{
    cout << "Hello World!";
    return 0;
}

这里要注意的一件大事......如果你曾经做过任何 C 编码,

int _tmain(int argc, _TCHAR* argv[])

看起来很奇怪。它应该是:

int main( int argc, char ** argv )

就我而言,我只是将程序更改为:

#include <iostream>
using namespace std;

int main()
{
     cout << "Hello world from  VS 2010!\n";
     return 0;
}

它工作得很好。

注意:使用 CTRL + F5 使控制台窗口保持不变,以便您查看结果。

于 2012-02-29T02:54:03.250 回答
0

通常存储在 C:\Program Files\Microsoft Visual Studio 8\VC\include 文件夹中。首先检查它是否仍然存在。然后选择工具 + 选项、项目和解决方案、VC++ 目录,在“显示目录”组合框中选择“包含文件”,并仔细检查 $(VCInstallDir)include 是否在列表顶部。

于 2010-02-04T15:45:14.397 回答
0

我来到这里是因为我遇到了同样的问题,但是当我这样做时,#include "stdafx.h"它说它没有找到那个文件。
对我来说诀窍是:#include <algorithm>
我使用 Microsoft Visual Studio 2008。
这些是您可以使用的东西,包括。“计数”:链接

于 2016-12-05T11:03:33.357 回答
0

有这个问题,当头文件声明“使用命名空间std;”时,GNU 编译器似乎很困惑;反正风格很差!

解决方案是在标头中提供 std::cout ... 并将“使用命名空间 std”移动到实现文件。

于 2021-03-24T19:12:08.897 回答
-1

在 VS2017 中,stdafx.h似乎被替换为pch.h这篇文章

所以使用:

#include "pch.h"
#include <iostream>

using namespace std;

int main() {
    cout << "Enter 2 numbers:" << endl;
于 2020-06-07T06:39:49.177 回答
-5

它是编译器——我现在正在使用 Eclipse Galileo,程序的运行就像一个奇迹


于 2009-12-15T03:30:26.457 回答