【问题标题】:C++ transferring comma sepetated floats from argument 3-column csv file into 3 sepetate vectorsC++ 将逗号分隔的浮点数从参数 3 列 csv 文件转换为 3 个分隔向量
【发布时间】:2017-04-15 19:20:13
【问题描述】:

我有一个从命令行传递的 csv 文件,看起来像:

    2.26645, -0.258901, -213.274
    5.45054, 345.333, 73.1871
    7.18079, 25.156, 125.408
    ...

我想将这些浮点数提取为 3 个浮点向量,每列一个。我只能在一个向量中提取所有浮点数,

ifstream input_file;
input_file.open(argv[1],ios::out);

string line;
string value;

while(getline(input_file,line)){
    istringstream ss(line);
    while(getline(ss,value,',')){


    }


}

问题在于,如前所述,我希望每列使用 3 个向量。

【问题讨论】:

  • 为什么是三个向量?为什么不使用一个包含每行三个数字的结构以及这些结构的向量?
  • 也许最终会。我只是围绕着一个逐渐扩大的程序的小部分展开。

标签: c++ csv vector command-line-arguments delimiter


【解决方案1】:

第一个问题是因为您将文件名放入字符串流而不是文件内容。打开一个合适的input file stream从文件中读取数据。


解决上述问题后,可以通过从文件中一次读取一行并将其放入input string stream 来解决第二个问题。然后解析来自该流的输入。

该解析可以类似于您所知道的跳过空格和逗号来完成。或者你可以使用std::getline 三次得到每个值(std::getline 支持自定义“字段”分隔符)然后convert the strings to floating point numbers。将每个数字放入自己的向量中。

【讨论】:

  • 我修改了代码现在如何存储每列的值?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多