我看到了类似的问题:C++ string variables with if statements
他的情况和我的情况之间的唯一区别是,如果带有空格的字符串与某个字符串匹配,我希望条件。
这是我的代码:
#include <iostream>
#include <string>
int main()
{
using namespace std;
string input1;
cout << "Welcome to AgentOS V230.20043." << endl;
cout << "To log in, please type \"log in\"" << endl;
cin >> input1;
if (input1 == "log in")
{
cout << "Please enter your Agent ID." << endl;
}
return 0;
}
由于某种原因,if语句没有拾取字符串。但是,如果条件是:
if (input1 == "login"
有效。我找不到一种方法来使用带有条件的空格的字符串。我想知道if语句是否可以,但是cin正在删除空格。
谢谢!
答案 0 :(得分:2)
您应该使用标准函数std::getline
而不是operator >>
例如
if ( std::getline( std::cin, input1 ) && input1 == "log in" )
{
std::cout << "Please enter your Agent ID." << std::endl;
}
答案 1 :(得分:1)
cin >>
忽略空格,使用getline:
getline(cin, input1);
答案 2 :(得分:0)
您需要使用std::getline
的空格读取整行,当找到换行符\n
或N-1
字符时,它会停止。所以,只需这样阅读:
cin.getline( input1, N );
其中N
是将要读取的最大字符数。