为什么我将数字数据从文本文件导入二维数组的代码不起作用?
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中,如果您检查我输入的内容,它在垂直方向上是相同的),在第二行中,是相关的整数值。
我想这可能是你的问题。
文本文件中的数据是这样写的 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中,如果您检查我输入的内容,它在垂直方向上是相同的),在第二行中,是相关的整数值。 我想这可能是你的问题。