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

C++读取CSV文件打印到控制台仅输出空白行如何解决

问题原因

  • 核心问题是未调用getline(fin, line)从文件流读取内容到line变量,line始终是初始化的空字符串,传入stringstream解析后得到的所有字段都是空值,所以输出全是空白行,和文件大小没有关系。
  • 外层while(fin.is_open())是冗余逻辑,内部循环执行10次后就会关闭文件,该循环仅会执行1次,没有实际作用。
  • 现有逻辑没有判断文件读取状态,若文件行数不足10行,会出现异常读取。

解决方案

调整读取逻辑,每次循环先从文件流读取一行内容到line,再做字段解析,同时增加文件读取结束的判断,修正后代码如下:

#include <iostream>
#include <fstream>
#include <string>
#include <sstream>

using namespace std;

int main() {
    string line;
    ifstream fin;
    fin.open("train_dataset_20k.csv");

    if (!fin.is_open()){
        cout << "Error opening file" << endl;
        return 1;
    }

    for (int i = 0; i < 10; i ++){
        // 先从文件流读取一行内容
        if(!getline(fin, line)) {
            // 文件提前读取结束则退出循环
            break;
        }
        string Sentiment,id,Date,Query,User,Tweet;
        stringstream lineSS(line);

        getline(lineSS, Sentiment, ',');
        getline(lineSS, id, ',');
        getline(lineSS, Date, ',');
        getline(lineSS, Query, ',');
        getline(lineSS, User, ',');
        getline(lineSS, Tweet, '\n');

        cout << Sentiment << endl;
        cout << id << endl;
        cout << Tweet << endl;
    }

    fin.close();
    return 0;
}

补充提示

如果CSV中的推文字段本身包含逗号,当前用逗号作为分割符的逻辑会出现字段错位,后续可以针对带引号包裹的字段做特殊解析逻辑,避免读取错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 16:57:01