簡體   English   中英

C++ CSV 獲取線

[英]C++ CSV Getline

我在 csv 文件中有一列浮點數。 無列 header。

string val;
vector<float> array;

string file = "C:/path/test.csv";

ifstream csv(file);
if (csv.is_open())
{
    string line;
    getline(csv, line);

    while (!csv.eof())
    {   
        getline(csv, val, '\n');
        array.push_back(stof(val));
    }

    csv.close();

}

我想將列中的值推送到向量array 當我使用','作為分隔符時,它將第一行推送到數組,但列的 rest 粘在一起並且無法推送。 如果我使用'\n'它不會返回第一行並且我得到一個stof錯誤。

我嘗試了其他答案沒有成功。 在這里格式化的正確方法是什么?

測試.csv

在此處輸入圖像描述

您的原始test.csv可能如下所示:

1.41286
1.425
1.49214
...

所以沒有逗號,並且使用,作為“(行)分隔符”將讀取整個文件並僅解析第一個浮點數(直到第一個\n )。

此外,第一行被讀取但從未使用過:

getline(csv, line);  // <- first line never used

while (!csv.eof())
{   
    getline(csv, val, '\n');
    array.push_back(stof(val));
}

由於只有一個字段,您不必使用分隔符,並且正如評論中已經提到的,使用while(getline(...))是正確的方法:

if (csv.is_open())
{
    string line;

    while (getline(..))
    {   
        array.push_back(stof(val));
    }

    csv.close();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM