C ++将文件读入矢量

时间:2018-01-28 21:18:19

标签: c++ c++11

我正在尝试从文件读取值到C ++向量。该文件如下所示:

Object obj = parser.parse(new FileReader("\\testdata.json"));

我在python 3中有代码来读取文件并将值存储在列表中。

file f1.txt:
1.,2.
3.,4.
5.,6.
7.,8.
9.,10.

输出:

def main():
    vec1=[]
    vec2=[]
    with open('f1.txt','r') as f1:
        for line1 in f1:
            a=(line1.strip()).split(sep=',')
            vec1.append(float(a[0]))
            vec2.append(float(a[1]))
    print('First vercor : {0} \nSecond vector: {1}'.format(vec1,vec2))    

#

if __name__=='__main__':
    main()

我想要在C ++中导入First vercor : [1.0, 3.0, 5.0, 7.0, 9.0] Second vector: [2.0, 4.0, 6.0, 8.0, 10.0] 或创建C ++代码来实现相同的目标。导入选项很复杂。我看了几个C ++示例,但无法像python代码一样有效(简短)。有人可以建议一种在C ++中实现这一目标的方法 - 特别是拆分字符串并将第一部分放入一个向量中,将第二部分放入另一个向量中吗?

编辑:

我在问题中明确提到我在C ++中寻找简短的方法:

  • 规定读取行删除任何前导和尾随字符,包括结束行python vec1,vec2。我看一下What's the best way to trim std::string?,剥离的C ++代码将比整个python程序更大。
  • 拆分结果字符串并将它们作为浮点数放入两个向量中。

How can I read and parse CSV files in C++?等其他答案没有解决这些问题。

1 个答案:

答案 0 :(得分:1)

float a, b;
char comma;
vector<float> vec1, vec2;
ifstream in("f1.txt");
while (in >> a >> comma >> b)
{
    vec1.push_back(a);
    vec2.push_back(b);
}

未经测试的代码,没有错误处理。