C ++ if语句没有解析空格

时间:2016-03-03 01:49:59

标签: c++ if-statement whitespace space

我在c ++控制台应用程序中的if语句不起作用:

string line;
cin >> line;

if (line == "a b"){
    cout << "lalala";
}

当我输入&#34; a b&#34;没有任何反应 如果我使用if (line == "ab")并输入ab就行了。

2 个答案:

答案 0 :(得分:4)

std::cin读取由空格分隔。因此,当您阅读cin >> line时,您只是在阅读&#34; a&#34;来自&#34; a b&#34;。使用std::getline(std::cin, line)读取整行,包括空格(不是&#39; \ n&#39;)。

顺便说一下,您可以通过使用调试器查看变量或打印它来轻松找到此问题。在发布问题之前调试代码。

注意:std::cin我的意思是operator>>,它有很多重载,作为非成员和istream成员。占用std::string读取的重载由空格分隔。

答案 1 :(得分:3)

因为阅读将一直持续到空白,这意味着line将在此"a"

请参阅operator>>(std::basic_string)

  

直到满足以下条件之一:

     对于is中的下一个字符c,

std :: isspace(c,is.getloc())为true(此空白字符保留在输入流中)。