c ++ string.compare不接受空格字符

时间:2014-07-23 22:29:28

标签: c++ string compare

首先,我想对我的坏名称抱怨。现在问题。我想在C ++中比较两个字符串。我尝试过使用string.compare和==,但没有一个能够工作。这是代码

if(game_type == "AI vs AI"){
    std::cout<<"You choosed AI vs AI\n";
    aiVsAI(range);
}
else{
std::cerr <<"Error";
}

并使用string.compare

if(game_type.compare("AI vs AI") == 0){
    std::cout<<"You choosed AI vs AI\n";
    aiVsAI(range);
}
else{
    std::cerr <<"Error";
}

如果我给AIvsAI输入程序正常,但如果我输入AI(空格)vs(空格)AI,程序将打印“错误”。我尝试使用\ x20即时空间,但这也没有用。任何想法为什么会发生这种情况?

1 个答案:

答案 0 :(得分:2)

您似乎正在使用类似于

的声明
std::cin >> game_type;

获取用户输入。问题是>>运算符只从用户输入的行中提取第一个单词,这使得game_type在您键入{{1}时仅包含AI }}。 (另请注意,如果您在下一行使用AI vs AI,则std::cin >> blah将包含blah,因为尚未使用该类型输入。)

要解决此问题,您可以使用std::getline

vs

这将获取用户在该行上键入的所有内容(最多但不包括 Enter keypress)并将其放在std::getline(std::cin, game_type); 中。这几乎总是获得用户输入交互式程序的正确方法。