C++将文件读取到向量中

C++ reading files into vectors

本文关键字:向量 读取 文件 C++      更新时间:2023-10-16

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

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

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

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()

输出:

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++中导入vec1,vec2或创建C++代码来实现相同的目的。导入选项很复杂。我看了几个C++的例子,但无法像python代码那样有效(简短而简单)。有人可以提出一种在C++中实现这一目标的方法——尤其是拆分字符串并将第一部分放入一个向量中,将第二部分放入另一个向量中?

编辑:

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

  • 提示读取行以删除任何前导和尾随字符,包括结束行 Pythonstrip()这样做。我看了一下修剪std::string的最佳方法是什么?,剥离的C++代码将比整个python程序大。
  • 拆分生成的字符串并将它们作为浮点数放入两个向量中。

其他答案,如如何读取和解析C++中的 CSV 文件?没有解决这些要点。

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);
}

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