C++将 txt 数据和字符读取到 2D 数组中

C++ read txt data and char into 2D array

本文关键字:2D 数组 读取 字符 txt 数据 C++      更新时间:2023-10-16

我想将文本读入包含数据和字符的arrayA[][]中。好像

然后我需要计算数据。我的代码无法做到这一点。我尝试输出 A[][] 以查看是否有任何问题,结果发现所有元素都是 0.000。请帮助我找出如何更改它。谢谢!

enter code here
#define _CRT_SECURE_NO_DEPRECATE
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <string>
#include <fstream>
#include <limits>
int    p = 518868;
int    q = 11;
int    s, t, i, j, k, m, d, r, u;
double A[518868][11];
int    main(void)
{
FILE  *fid;
using namespace std;
ifstream file("dump600.txt");
if (file.is_open())
{
for (i = 1; i <= p; i++)
{
for (j = 1; j <= q; j++)
{
file >> A[i][j];
}
}
}

fid = fopen("RstA600.txt", "wt");
for (i = 1; i <= 10000; i++)
{
for (j = 1; j <= 11; j++)
{
if (j == 11)
{
fprintf(fid, "%fn", A[i][j]);
}
else
{
fprintf(fid, "%ft", A[i][j]);
}
}
}
fclose(fid);
dump600.txt
id  type x  y   z   c_q[1]       c_q[2]     c_q[3]       c_q[4]    x    y
1   1    0  0   30  -0.0075608  -0.710037   0.703789    0.021699    0   0
3   1    10 0   30  0.0138984   -0.409617   0.0338428   -0.911523   10  0
5   1    20 0   30  -0.31169    -0.685503   0.450455    0.479609    20  0
7   1    30 0   30  -0.194787   -0.373789   0.511419    -0.74886    30  0

问题似乎是包含文本的第一行,这将使任何file >> A[i][j]失败。为了克服这个问题,您可以使用std::getline跳过第一行;还要考虑以某种方式对无效输入做出反应。此外,C++中的索引以0开头,而不是以1开头,这样for (j = 1; j <= q; j++)等就会超出界限并产生未定义的行为。查看应该有效的代码示例:

if (file.is_open())
{
std::string line;
if(std::getline(file, line)) {
for (i = 0; i < p; i++)
{
for (j = 0; j < q; j++)
{
if (!file >> A[i][j]) {
cout << "Invalid input.";
}
}
}
}
}