C++问答程序中cin无法读取带空格输入的问题求助
问题解决:让C++程序接受带空格的输入并正确匹配答案
问题根源
你当前代码的核心问题在于 cin >> player1_answer 的行为:它会把空格作为输入分隔符,只读取第一个空格前的内容。比如输入"George Washington"时,player1_answer 实际只存储了"George"——如果你的目标答案是完整的"George Washington",自然会判定不匹配输出'x';而输入"George"时刚好和当前代码里的answer值一致,所以输出'check'。
解决方案
要实现接受带空格的输入并匹配完整答案,需要做两处关键修改:
- 将
answer修正为完整的目标值"George Washington" - 使用
getline(cin, player1_answer)读取整行输入(包含空格)
修改后的完整代码
#include <iostream> #include <string> // 必须包含该头文件以使用string类型 using namespace std; int main() { string player1_name = "Player1"; // 根据你的实际逻辑替换或赋值 string answer = "George Washington"; // 修正为完整答案 cout << "\t\t\t\t\t Who was the first President of United States?" << endl; cout << endl; cout << endl; cout << "Congrats " << player1_name << " (Player1). Now, type in your answer:"; // 读取包含空格的整行输入 getline(cin, player1_answer); if (player1_answer == answer) { cout << "check"; } else { cout << "x"; } return 0; }
额外注意事项
如果你的代码中在getline之前有其他cin >>操作(比如读取player1_name时用了cin >> player1_name),需要在getline前添加cin.ignore()清除输入缓冲区残留的换行符,否则getline会直接读取空行:
cin >> player1_name; cin.ignore(); // 清除换行符 getline(cin, player1_answer);
内容的提问来源于stack exchange,提问作者Gssjsbs
相关产品推荐
相关产品推荐

