gpt4 book ai didi

c++ - 在 C++ 中存储来自文本文件的矩阵

转载 作者:行者123 更新时间:2023-11-28 06:46:04 25 4
gpt4 key购买 nike

您好,非常感谢!

我是 C++ 的新手,抱歉,如果我的起点是废话...我需要打开并读取一个文本文件以应用一些数值过程,但我发现很难弄清楚这一步。 ..

接下来,您可以看到文本数据。您将如何阅读此文本,将这些值/数字存储在维度为 [3,4] 的矩阵中?

读取数据.txt:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1 0.00000e+00 0.00000e+00
2 1.00000e+00 0.00000e+00
3 0.00000e+00 -1.00000e+00
4 2.00000e+00 -2.00000e+00
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

我被这个起始代码卡住了...

string line;
ifstream myfile ("readata.txt");
if (myfile.is_open())
{
while (! myfile.eof() )
{
for (int lineno = 0; getline (myfile,line) ; lineno++)
{
if (lineno >= 2 && lineno <= 5)
{
cout << line << endl;
}
else
{};
}
myfile.close();
}
else cout << "Unable to open file";

最佳答案

让你开始:

  • 使用std::stringstream将字符串(每一行)作为流进行操作
  • 使用std::stodstring 转换为 double
  • 不要检查 eof(),它不会按照您的想法进行。相反,您可以检查 getline()
  • 返回的值

一个最小的工作示例可能看起来像这样(它可以被优化,但我希望它易于阅读):

int main()
{
std::ifstream file("matrix.txt");

if(!file)
throw std::runtime_error("Error opening file");

double matrix[4][3];
std::string line;
unsigned i = 0;
while(std::getline(file, line))
{
std::stringstream ss;
ss << line;
std::string x, y, z;
ss >> x >> y >> z;

double xd = std::stod(x);
double yd = std::stod(y);
double zd = std::stod(z);

std::cout << xd << " " << yd << " " << zd << '\n';
matrix[i][0] = xd;
matrix[i][1] = yd;
matrix[i][2] = zd;
i++;
}
return 0;
}

关于c++ - 在 C++ 中存储来自文本文件的矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24965618/

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