我在c ++控制台应用程序中的if语句不起作用:
string line;
cin >> line;
if (line == "a b"){
cout << "lalala";
}
当我输入&#34; a b&#34;没有任何反应
如果我使用if (line == "ab")
并输入ab就行了。
答案 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(此空白字符保留在输入流中)。