gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 02:44:26 27 4
gpt4 key购买 nike

首先,我想为我的错误标题道歉。现在的问题。我正在尝试比较 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 instant of space 但这也不起作用。知道为什么会这样吗?

最佳答案

看来您正在使用类似于

std::cin >> game_type;

获取用户输入。问题在于 >>> 运算符仅从用户键入的行中提取 第一个 单词,这使得 game_type 仅包含 AI 当您键入 AI vs AI 时。 (作为旁注,如果您要在下一行使用 std::cin >> blah,那么 blah 将包含 vs 因为该键入的输入尚未被使用。)

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

std::getline(std::cin, game_type);

这会获取用户在行中键入的所有内容(直到但不包括 Enter 按键)并将其放入 game_type 中。这几乎总是为交互式程序获取用户输入的正确方法。

关于c++ string.compare 不接受空格字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24922132/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com