我有以下代码:
file << "Hello" << "\n" << "World"
它适用于gcc,但是当我使用Visual Studio 2013进行编译时,我在loop = getline(instream,line)处获得了构建错误:
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
using namespace std;
int main() {
// your code goes here
stringstream instream("a x b c d x c d");
string line;
bool loop;
loop = getline(instream, line);
return 0;
}
如何解决此问题?
答案 0 :(得分:3)
隐式布尔转换规则changed from C++03 to C++11,并且这些内容的编译器支持在不同平台上有很大差异。
如果你真的需要这个,我会使用旧的强制布尔技巧:
loop = !!getline(instream, line);
如果您将getline
直接转换为if
条件,而不是先将其分配给变量,则不需要这个技巧,因为if
is special。