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

C++程序报错:lvalue required as left operand of assignment(第20行)求助

修复C++程序中的"lvalue required as left operand of assignment"错误

直接解决第20行的编译错误

你遇到的编译错误根源有两个:

  • 错误地将比较运算符==写成了赋值运算符=,赋值操作不能作为if条件的判断逻辑
  • a[i]是单个char类型字符,你用双引号包裹的字符串常量(如"0",类型为const char*)进行比较,类型不匹配。应该使用单引号包裹的字符常量(如'0')

原第20行的判断可以简化为更高效的范围检查:

if (c >= '0' && c <= '9')

代码中其他的逻辑Bug和修复

除了编译错误,你的代码还有多处逻辑问题,完全无法实现“提取数字并找不改变顺序的最大三位数”的需求,以下是完整修复方案:

完整修正代码

#include <iostream>
#include <string>
#include <vector>
#include <fstream>

using namespace std;

int main()
{
    string a;
    ifstream input("D:\\C++\\Tim so\\Bai1\\input.inp");
    ofstream output("D:\\C++\\Tim so\\Bai1\\output.out");
    input >> a;
    
    vector<char> digits;
    // 提取字符串中的所有数字字符
    for (char c : a)
    {
        if (c >= '0' && c <= '9')
        {
            digits.push_back(c);
        }
    }
    
    int max_num = -1;
    // 遍历所有连续三位的数字组合(保持原顺序)
    int digit_count = digits.size();
    if (digit_count >= 3)
    {
        for (int i = 0; i <= digit_count - 3; ++i)
        {
            // 将字符转换为整数数值
            int current_num = (digits[i] - '0') * 100 + 
                              (digits[i+1] - '0') * 10 + 
                              (digits[i+2] - '0');
            if (current_num > max_num)
            {
                max_num = current_num;
            }
        }
        cout << max_num << endl;
        output << max_num << endl;
    }
    else
    {
        cout << "提取到的数字不足三位" << endl;
        output << "提取到的数字不足三位" << endl;
    }
    
    input.close();
    output.close();
    return 0;
}

关键修复点说明

  1. 容器类型优化:将vector<string>改为vector<char>,单个数字字符用char存储更合理,避免不必要的内存开销
  2. 遍历逻辑修正:用size()代替capacity()获取实际元素数量,capacity()是容器已分配的内存容量,不等于实际元素数
  3. 核心逻辑重写:遍历所有连续的三位数字组合,计算其对应的整数值,记录最大值,完全符合“不改变数字顺序找最大三位数”的需求
  4. 边界处理:增加了数字不足三位的判断,避免越界访问并给出明确提示
  5. 文件操作优化:用ofstream专门处理文件写入,比fstream更贴合场景,最后显式关闭文件(规范操作)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 06:00:08