请不要在标题混淆,因为它已经由某人但对于不同的环境要求
下面的代码在Visual C ++编译器(VS2008)不会被编译,而是抛出此异常:
std::ifstream input (fileName);
while (input) {
string s;
input >> s;
std::cout << s << std::endl;
};
但是这个代码编译Cygwin中G ++罚款。 有什么想法吗?
请不要在标题混淆,因为它已经由某人但对于不同的环境要求
下面的代码在Visual C ++编译器(VS2008)不会被编译,而是抛出此异常:
std::ifstream input (fileName);
while (input) {
string s;
input >> s;
std::cout << s << std::endl;
};
但是这个代码编译Cygwin中G ++罚款。 有什么想法吗?
你已经囊括了所有的下列头?
<fstream>
<istream>
<iostream>
<string>
我的猜测是,你忘了<string>
。
在一个侧面说明:这应该是std::cout
和std::endl
。
添加到@sbi答案,在我的情况的差异,包括<string>
代替<string.h>
(2017年VS下)。
请参阅下面的回答: 类似情况下的答案
include <string>
尝试包括与沿着串标头文件<iostream>
文件。 它会在某些编译工作,即使没有<string>
,因为不同的编译器的设置是不同的,它是负责读取以“#”符号开始产生一个OBJ文件预处理文件编译器。
除了其他人说什么。 下面的代码是必要的,我的应用程序成功地编译。
std::cout << s.c_str() << std::endl;
另一种变通到这是去项目属性 - >常规 - >字符集,然后选择“UES多字节字符集”(你将不再需要使用c_str()输出字符串)
有缺点使用MBCS所以如果你打算本地化您的软件,我advize反对这一点。