Visual Studio 2012 C++ "Hello World" - iostream无法工作

9
我在使用Visual Studio 2012时遇到了问题,同时我也在使用“Sams Teach Yourself C++ in One Hour a day, 7th edition”这本书。
在使用谷歌寻找C++的“最佳”编译器后,Visual Studios似乎是最好的选择。于是我下载并安装了Visual Studios 2012。书中的第一课(并告诉我通过转到“文件>新建>项目>Visual C++>Win32>控制台应用程序”运行它作为控制台应用程序) 。
 #include <iostream>

int main()
{
 std::cout << “Hello World!” << std::endl;
 return 0;
}

这段代码完全不起作用,输出一个类似以下的错误信息:

1>c:\users\nik\documents\visual studio 2012\projects\consoleapplication4\consoleapplication4\consoleapplication4.cpp(8): error C2065: '“Hello' : 未声明的标识符 1> 正在生成代码... ========== Build: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 =========="

(还有很多行和第一行相似的内容,但是很长)

然而,在谷歌上搜索并观看YouTube视频后,以下代码可以实现(使用 文件 > 新建 > 项目 >Visual C++ > 通用 > 空项目)。

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

using namespace std;

int main() {
cout << "Hello Nik" << endl;
_getch();

return 0;
}

Visual Studio 2012是否有C++编译器?还是只有Visual C++编译器(如果是这个问题的话,我认为唯一的原因是我能够看到Visual C++的模板,但没有独立的C++模板...)或者我需要下载Visual Studio Express来下载本地的C++?任何帮助都将不胜感激,因为我在这方面有些力不从心...谢谢。

8
错误的撇号?使用“”代替"" - acraig5075
Visual Studio不是编译器,它只是任何编译器的“大文本编辑器”。 - Kamil
为了发布这个问题,我复制粘贴了书中编写的代码,所以我认为这就是撇号不同的原因。无论如何尝试,仍然出现了失败错误。 - Nik
2
@Kamil - 即使是免费的“express”版本也包括编译器和很多其他工具。“Visual Studio”是整个软件包的名称。 - user180247
我只是指出,Visual Studio不是一个编译器(对于我的糟糕英语表示抱歉)。 - Kamil
6个回答

13
除了撇号外,您可能需要在项目属性中禁用预编译头。 它们在VS2012中默认打开。如果您不熟悉预编译头,请将其关闭。
  1. 右键单击项目(而不是解决方案)。
  2. 点击“属性”。
  3. 展开“配置属性”
  4. 展开“C/C++”
  5. 选择“预编译头”
  6. 将“预编译头”设置为“Not Using Precompiled Headers”
有关预编译头和stdafx.h文件的更多信息请参见维基百科

我按照您描述的方式找不到预配置的标头。但是,我启动了一个新项目,并取消选中了预编译标头的复选框,然后它正常工作了!非常感谢。 - Nik
我在我的“列表”上跳过了“单击属性”。我现在已经修复了我的答案。 - Kamil
1
有趣的是,我已经开启了预编译头文件,但仍然能够重现与问题中相同的错误(假设撇号是错误的)。这里一定还有其他问题。我不认为预编译头文件是罪魁祸首。 - Alex R.
如果你打开了预编译头文件,编译器会跳过未预编译的 "iostream" 并在使用预编译头文件时寻找 "stdafx.h"。 - Kamil

7
您使用的撇号是错误的:
“Hello World!” 

应该是

"Hello World!"

请注意,即使是SO也能识别出差异。您应该至少输入书中看到的代码,而不是复制粘贴它。;-)

我是这样做的。为了回答这个问题,我只是简单地复制粘贴了书上写的内容,因为页面上还有其他代码。 - Nik
1
那么为什么不复制你在应用程序中实际使用的代码,而是从书中复制呢?为了这个问题的目的,我在我的IDE中尝试了你的实际代码 - 哦,我得到了相同的未声明标识符错误。因此,只需尝试更改撇号,你就应该没问题了。 - Alex R.
我可能应该使用Ctrl-Z键回到我的原始代码,而不是从书中复制粘贴,但是我最初确实使用了正确的撇号。不过还是感谢你的答案。哦,倒票不是我给的。再次感谢。 - Nik
@Nik 您可以随时复制您的_实际_代码 - 减去不相关的部分 - 并相应地更新您的问题。 - Alex R.

4
Win32控制台应用程序与空白项目实际上有很大的区别。Win32利用消息(输入)队列,在循环中进行轮询,您的程序分别使用Win32 API执行某些操作。
空白项目对Win32或Windows提供的API不太依赖,除非您使其依赖。这将是您在空白项目中编写的最简单的 hello world 应用程序:
#include <iostream>

using namespace std;

int main() 
{
    cout << "Hello World" << endl;

    return 0;
}

4

试试这个:

"你好,世界!" 而不是 “Hello World!”


1
谁在投票否决我们的答案?无论是谁,请解释一下,因为这是应该做的正确的事情。 - Alex R.
@AlexR. - 你为什么问我呢?我是那个回答被踩的人。能否请你解释一下原因? - Abhineet
不,事实上我给你点了赞。而且我也没有问你。谁给你的回答点了踩,我想他/她也给我的回答点了踩。但是他/她没有解释为什么,这是不负责任的。 - Alex R.
3
+1,然后。我们指出了代码中非常明显的错误。 - Abhineet

0

之间的区别

“Hello World!” and 
"Hello Nik" is the apostrophe. 

如果错误仍然存在,那么请检查Visual C++库链接器。

也绝对不需要conio.h

如果你要从书上复制,请至少正确地复制。

Using namespace std; 
would be pretty smart in this case. 

0
为了修复您的错误,您需要删除 std::cout 和 std::endl 中的 std::,然后在 #include iostream 下面编写 using namespace std;,并将“ ”更改为 " "。
#include <iostream>
using namespace std;
int main() 
{
   cout <<"Hello World" << endl;
   return 0;
}

在 Visual Studio 2012 中

 file>new projet>visual c++ (Project win32)>application settings(application console+Not Using Precompiled)>in right box in you Project (right click, add>new element>file c++).

你到底做了什么改动?你有解释任何东西吗?回答一点帮助都没有=( - user2913837

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接