首先,我想对我的坏名称抱怨。现在问题。我想在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即时空间,但这也没有用。任何想法为什么会发生这种情况?
答案 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);
中。这几乎总是获得用户输入交互式程序的正确方法。