使用stringstream输入/输出bool值

And*_*ndy 4 c++ stringstream

这似乎是一个愚蠢的问题,但我很难过.这是我的代码:

int main()
{
    string line, command;
    getline(cin, line);
    stringstream lineStream(line);

    bool active;
    lineStream >>active;
    cout <<active<<endl;

}
Run Code Online (Sandbox Code Playgroud)

无论我输入什么活动,它总是打印出来0.所以我要说我的输入是

true
Run Code Online (Sandbox Code Playgroud)

它输出0和false同样的东西.

Die*_*ühl 14

您应该始终验证您的输入是否成功:您会发现它不是.您想要1使用当前设置尝试该值:

if (lineStream >> active) {
    std::cout << active << '\n';
}
else {
    std::cout << "failed to read a Boolean value.\n";
}
Run Code Online (Sandbox Code Playgroud)

如果你希望能够进入truefalse,你需要使用std::boolalpha:

if (lineStream >> std::boolalpha >> active) {
    std::cout << std::boolalpha << active << '\n';
}
Run Code Online (Sandbox Code Playgroud)

格式化标志更改格式的方式bool使用依赖于区域设置的字符串.