You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++问答程序中cin无法读取带空格输入的问题求助

问题解决:让C++程序接受带空格的输入并正确匹配答案

问题根源

你当前代码的核心问题在于 cin >> player1_answer 的行为:它会把空格作为输入分隔符,只读取第一个空格前的内容。比如输入"George Washington"时,player1_answer 实际只存储了"George"——如果你的目标答案是完整的"George Washington",自然会判定不匹配输出'x';而输入"George"时刚好和当前代码里的answer值一致,所以输出'check'。

解决方案

要实现接受带空格的输入并匹配完整答案,需要做两处关键修改:

  1. 将answer修正为完整的目标值"George Washington"
  2. 使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 14:55:23