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

为何输入正确字符串时,C++字符串比较未输出预期的amen?

你的代码问题出在输入读取的方式上!

我来给你拆解一下:

当你用cin >> entverse的时候,这个输入操作符的特性是遇到空格、制表符或者换行符就会停止读取。而你的目标字符串verse里有大量空格(比如"Jn 3:30 Es nesesario..."),所以不管你输入多少内容,entverse只会存储第一个空格之前的部分(比如只存"Jn"),这肯定和完整的verse不相等,自然就输出"oops!"了。

解决方案

要读取包含空格的整行输入,你需要换成getline(cin, entverse),它会读取直到换行符的所有内容(包括空格)。修改后的代码如下:

#include <iostream>
#include <string>
using namespace std;
int main() {
    string verse = "Jn 3:30 Es nesesario que El cresca, pero que yo mengue.";
    string entverse;
    
    // 读取包含空格的整行输入
    getline(cin, entverse);
    
    if (entverse == verse) {
        cout << "amen!";
    } else {
        cout << "oops!";
    }
    system("pause");
}

另外提个小细节:你代码里定义了int opc;但完全没用到,建议删掉它,避免编译时出现无用变量的警告哦。


内容的提问来源于stack exchange,提问作者Isaac Ortiz Pena

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 19:07:39