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

C++运行提示no operator << matches these operands错误如何解决

报错原因&修复方案

1 运算符不匹配报错直接诱因

你遇到的no operator << matches these operands报错,根因是所有cin读取语句后都错误拼接了endl:

  • endl是仅适用于输出流cout的操纵符,作用是输出换行并刷新输出缓冲区,输入流cin没有重载对应的>>运算符支持接收endl参数
  • 修复方案:删除所有cin语句末尾的>> endl即可,用户输入时按回车键会自动分隔多个输入值,不需要额外加换行标识

2 隐藏的逻辑错误

就算解决了编译报错,你的代码运行结果也会不符合预期:

  • 你当前的代码顺序是先计算总时长、总英里数、日均英里数,之后才读取用户输入的8天徒步时长,参与计算的所有时长变量都是未初始化的垃圾值,计算结果完全无效
  • 修复方案:将三个计算逻辑移到所有cin读取操作之后,等用户输入完所有数据再做计算
修复后完整代码
#include <iostream>
using namespace std;

int main()
{
    int hourswalked, hourswalkedD2, hourswalkedD3, hourswalkedD4, hourswalkedD5, 
        hourswalkedD6, hourswalkedD7,hourswalkedD8;

    cout << endl << "Please enter the number of hours you have walked each day of your hike" << endl;

    cin >> hourswalked;
    cin >> hourswalkedD2;
    cin >> hourswalkedD3; 
    cin >> hourswalkedD4;
    cin >> hourswalkedD5;
    cin >> hourswalkedD6;
    cin >> hourswalkedD7;
    cin >> hourswalkedD8;

    // 输入完成后再执行计算
    int total_hours = hourswalked + hourswalkedD2 + hourswalkedD3 + hourswalkedD4 + hourswalkedD5 + hourswalkedD6 + hourswalkedD7 + hourswalkedD8;
    int total_miles = total_hours * 3;
    int avg_miles = total_miles / 8;

    cout << "You walked for " << total_hours << " hours." << endl;
    cout << "You walked for " << total_miles << " miles." << endl; 
    cout << "On average you walked " << avg_miles << " miles." << endl;

    return 0; 
}

可选优化

如果需要得到更精准的日均步行英里数,可以把avg_miles的类型改为double,计算时写为double avg_miles = total_miles * 1.0 / 8;,避免整数除法截断小数部分。

内容的提问来源于stack exchange,提问作者tgol

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 06:39:02