[英]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.