gpt4 book ai didi

c++ - 将数据文件读入二维数组 C++

转载 作者:行者123 更新时间:2023-11-30 04:21:16 26 4
gpt4 key购买 nike

我有一个包含 2 列和许多行的文本文件。每列由空格分隔。我需要将它们读入二维数组以进行进一步计算。我的数据文件看起来像

0.5 0.479425539
1 0.841470985
1.5 0.997494987
2 0.909297427
2.5 0.598472144
3 0.141120008
3.5 -0.350783228
4 -0.756802495
4.5 -0.977530118
5 -0.958924275

而我微弱的尝试是

#include <iostream>
#include <fstream>
#include <string>
#include <conio.h>
#include <ctype.h>
using namespace std;

int main () {
char line,element;
std::ifstream myfile ("C:\\Users\\g\\Desktop\\test.txt");
if (myfile.is_open())
{
while ( myfile.good() )
{
getline(myfile,line);
cout << line<<endl;
_getch();
}
myfile.close();

}

else cout << "Unable to open file";

return 0;

}

问题是我无法正确读取它们......要么读取整行......如果我将分隔符指定为“空格”,那么它不会读取下一行。

请指出错误之处。我应该怎么做才能将数据存储到二维数组中以供进一步计算。谢谢

最佳答案

#include <fstream>
#include <string>
#include <sstream>
#include <iostream>
#include <vector>

int main(int argc, char** argv) {
std::ifstream f(argv[1]);
std::string l;
std::vector<std::vector<double> > rows;
while(std::getline(f, l)) {
std::stringstream s(l);
double d1;
double d2;
if(s >> d1 >> d2) {
std::vector<double> row;
row.push_back(d1);
row.push_back(d2);
rows.push_back(row);
}
}

for(int i = 0; i < rows.size(); ++i)
std::cout << rows[i][0] << " " << rows[i][1] << '\n';
}

最后一个 for 循环显示了如何使用“数组”中的值。变量 rows 严格来说不是数组,而是 vector 的 vector 。但是, vector 比 C 风格的数组安全得多,并且允许使用 [] 访问其元素。

[当我发布这篇文章时,我看到了一个非常相似的程序作为回应。我自己独立写的。]

关于c++ - 将数据文件读入二维数组 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14600489/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com