Windows上的Std :: getline

时间:2015-09-14 19:44:34

标签: c++ visual-studio

我有以下代码:

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;
}

如何解决此问题?

1 个答案:

答案 0 :(得分:3)

隐式布尔转换规则changed from C++03 to C++11,并且这些内容的编译器支持在不同平台上有很大差异。

如果你真的需要这个,我会使用旧的强制布尔技巧:

loop = !!getline(instream, line);

如果您将getline直接转换为if条件,而不是先将其分配给变量,则不需要这个技巧,因为if is special