为什么我将数字数据从文本文件导入二维数组的代码不起作用?

Why does my code to import numeric data from a text file into a 2D array does not work?

文本文件中的数据是这样写的 0 23 4 23 16 ..等等。

我想将它存储在一个 5*5 的静态数组中。但是当我尝试输出数组时,输出的是一堆乱码,而不是我想要导入的数据。

这是我的代码

#include <iostream>
#include <fstream>
using namespace std;

char A[5][5];
int i = 0, j =0;
int main()
{

  ifstream fin("File.txt");
  if (fin.is_open())
  {
   cout << "The file has been opened successfully" << endl;
    while(!fin.eof())
      {
        for(i = 0 ;  i<5; i++)
        {
            for(j =0; j<5; j++)
            {
               fin.get(A[i][j]);
             }
        }
      }
     }


     return 0; 
  }

我假设你想按数字输入数据。 但是,您正在调用的函数: std::istream& get (char& c) 正在逐个字符地获取数据,如:

(1) 单个字符 从流中提取单个字符。 该字符要么返回(第一个签名),要么设置为其参数的值(第二个签名)。

来源:http://www.cplusplus.com/reference/istream/istream/get/

对于输入 white-space 分隔的输入,考虑像这样使用普通的 >> 运算符:

std::string word;
while (file >> word)
{
    ...
}

假设您的 "File.txt" 包含:

0 23 45 58 36 5 425 442 4

您输入的这些特定的 25 (5*5) 个字符。 (是的,空格确实算作字符,在 ASCII 表中它实际上是第 32 个字符)。如果你运行这个函数就可以了:

for (size_t i = 0;i<5;++i)
    for(size_t j = 0;j<5;++j)
    {   cout << A[i][j] << setw (4);
        cout << int (A[i][j]) << endl;
    }

您将得到以下输出:

0  48
   32
2  50
3  51
   32
4  52
5  53
   32
5  53
8  56
   32
3  51
6  54
   32
5  53
   32
4  52
2  50
5  53
   32
4  52
4  52
2  50
   32
4  52

写在第一行:与您的字符串对应的字符(在File.txt中,如果您检查我输入的内容,它在垂直方向上是相同的),在第二行中,是相关的整数值。 我想这可能是你的问题。