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

C++读取CSV文件输出末尾多余空行导致测试失败如何解决

输出末尾多空行确实是endl使用不当导致的:endl会在输出内容后追加换行符,你当前对每一行有效输出都在末尾加了endl,最后一行数据输出后也会多出一个换行,就形成了末尾的空行。

另外你现有代码中用逗号运算符连接多个getline的写法存在逻辑问题:逗号运算符会忽略前面表达式的返回值,只要最后一个getline执行成功就会进入处理逻辑,字段不足时会读取到错误的脏数据,建议同时修复。

修复方案

修改后代码如下:

#include <iostream>
#include <fstream>
#include <algorithm>
#include <sstream>

using namespace std;

int main() {
    fstream file("db.csv", ios::in);
    string value1, value2, value3, value4, value5, line;
    bool is_first_line = true;

    while (getline(file, line)) {
        if (line.length() > 1) {
            istringstream str1(line);
            // 用逻辑与替代逗号运算符,保证所有字段读取成功才处理
            if (getline(str1, value1, ',') &&
                getline(str1, value2, ',') &&
                getline(str1, value3, ',') &&
                getline(str1, value4, ',') &&
                getline(str1, value5, '\n')) {
                
                value1.erase(remove(value1.begin(), value1.end(), ' '), value1.end());
                value2.erase(remove(value2.begin(), value2.end(), ' '), value2.end());
                value3.erase(remove(value3.begin(), value3.end(), ' '), value3.end());
                value4.erase(remove(value4.begin(), value4.end(), ' '), value4.end());
                value5.erase(remove(value5.begin(), value5.end(), ' '), value5.end());

                // 非首行先输出换行,再输出内容,避免末尾多空行
                if (!is_first_line) {
                    cout << '\n';
                }
                cout << value1 << " " << value2 << " " 
                     << value3 << " " << value4 << " " 
                     << value5;
                is_first_line = false;
            }
        }
    } 
    return 0;
}

核心修改点:

  • 新增首行标记控制换行输出,仅在非首行内容前输出换行,避免最后一行末尾多空行
  • 将逗号运算符替换为&&逻辑与,确保所有字段读取成功才进入处理逻辑
  • 移除每行末尾的endl,不再统一追加末尾换行
  • 如果你原本需要输出开头的result:行,只需要在首行标记定义后加一行cout << "result:\n";即可,不会影响后续的换行逻辑
  • 如果你的测试规则要求最后一行末尾必须带一个换行,仅需在return 0;前加一行cout << '\n';即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 15:54:04