c++ - C++ CSV 获取线
问题描述
我在 csv 文件中有一列浮点数。没有列标题。
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();
}
我想将列中的值推送到 vector array
。当我','
用作分隔符时,它会将第一行推到数组中,但列的其余部分会粘在一起并且不可推。如果我使用'\n'
它不会返回第一行并且我得到一个stof
错误。
我尝试了其他答案没有成功。在这里格式化的正确方法是什么?
测试.csv
解决方案
您的原始test.csv
数据可能如下所示:
1.41286
1.425
1.49214
...
所以没有逗号,使用,
as '(line) separator' 会读取整个文件并只解析第一个浮点数(直到第一个\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();
}
推荐阅读
- jenkins - 使用 Git 插件选项时限制可选凭据
- sql - 如何在 SQL 中选择日期最大的行
- java - 在反应式 Spring-Webflux 应用程序中使用 Spring AMQP @RabbitListener 时如何触发重试
- sql - 如何列出没有给定条款空白的最新系列?
- javascript - 材质 UI 自动完成反应。在列表中显示不同的选项并在表单状态中保存不同的选项(具有多个值)
- python - 如何让 Instagram 机器人在动态帖子下点赞评论?
- agora.io - 检查主机是否已加入 agora.io 会话
- flutter - Flutter Webview 滚动很长或不太流畅
- debugging - 有没有办法在 Pytorch 中获取当前在 GPU 内存中的对象树?
- xml - 如何使用 Omni XML 作为 DOMVendor 将子节点结构从一个 XML 文件复制到另一个 XML 文件(合并两个 XML 文件)