C ++ String输入为if / else语句条件

时间:2015-06-13 16:38:30

标签: c++ string

我看到了类似的问题: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正在删除空格。

谢谢!

3 个答案:

答案 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的空格读取整行,当找到换行符\nN-1字符时,它会停止。所以,只需这样阅读:

cin.getline( input1, N );

其中N是将要读取的最大字符数。