我正在编写一个代码来将 int 数组存储在文件中,然后用 c++ 检索它,但是检索第一项是假值,我该如何解决这个问题?

I am writing a code to store an int array in a file and then retrieve it in c++, but on retrieving the first item is bogus value, how do i fix this?

本文关键字:检索 一项 何解决 问题 解决 然后 代码 一个 int c++ 文件      更新时间:2023-10-16

我正在尝试将整数数组存储在c ++的文件中。 代码是

#include<iostream>
#include<fstream>
#include<string>
using namespace std;
int main() {
int arr[5];
for (int i = 0; i < 5; i++) {
arr[i] = i;
cout << arr[i];
}
cout << endl;
ofstream out;
out.open("arr.txt");
for (int i = 0; i < 5; i++) {
out << arr[i];
}
out.close();
ifstream in;
in.open("arr.txt");
for (int i = 0; i < 5; i++) {
in>>arr[i];
}
in.close();
for (int i = 0; i < 5; i++) {
cout << i << " " << arr[i] << endl;
}
cout << arr[0] << endl;
return 0;
}

现在我得到的输出是

01234
1234
1
2
3
4

第一个索引中的零在哪里?

当你写入数据时,你需要在数字之间放置空格

for (int i = 0; i < 5; i++) {
out << arr[i] << ' ';
}

否则,它们将一次作为单个int读入。

您忘记在输出中添加空格。 当你这样做时

for (int i = 0; i < 5; i++) {
out << arr[i];
}

arr包含{0,1,2,3,4}因此您可以01234写入文件,并在

使用
for (int i = 0; i < 5; i++) {
in>>arr[i];
}

整个01234作为值1234的单个整数进行读取,而不是将每个数字作为单独的数字读取。 将输出循环更改为

for (int i = 0; i < 5; i++) {
out << arr[i] << " ";
}

将使文件具有0 1 2 3 4,然后这些将作为单独的整数读取。