[英]Reading numbers from a text file to an array prints unexpected values
我正在編寫一個程序,將數組打印到文本文件,然后將該數組從該文本文件讀取到另一個數組,這是我的程序:
#include <iostream>
#include <fstream>
using namespace std;
void PrintToFile(int arr[], ofstream& PrintFile)
{
for (int i = 0; i < 10; i++)
{
arr[i] = i;
PrintFile << arr[i] << " ";
}
}
void ReadFromFile(int arr[], ifstream& ReadFile)
{
for (int i = 0; i < 10; i++)
ReadFile >> arr[i];
}
int main()
{
int arr1[10];
int arr2[10];
ofstream PrintFile("output.txt");
ifstream ReadFile("output.txt");
PrintToFile(arr1, PrintFile);
ReadFromFile(arr2, ReadFile);
for (int i = 0; i < 10; i++)
cout << arr1[i] << " ";
cout << endl;
for (int i = 0; i < 10; i++)
cout << arr2[i] << " ";
}
這是程序的 output:
0 1 2 3 4 5 6 7 8 9
-858993460 -858993460 -858993460 -858993460 -858993460 -858993460 -858993460 -858993460 -858993460 -858993460
我不明白為什么它會為第二個數組打印出這些數字,它應該與第一個數組相同,有人可以幫我解決這個問題嗎? 感謝您的幫助!
您只能打開一個文件一次,因此您的所有讀取都會失敗,並且該數組會留下不確定的值。
雖然您可以同時打開以進行讀取和寫入,但更常見的做法是(並且意外情況更少)在寫入后關閉,然后才打開以進行讀取。
這應該工作:
ofstream PrintFile("output.txt");
PrintToFile(arr1, PrintFile);
PrintFile.close();
ifstream ReadFile("output.txt");
ReadFromFile(arr2, ReadFile);
或者,您可以使用單獨的 scope 來界定寫入流的生命周期,並使其無法忘記關閉:
{
ofstream PrintFile("output.txt");
PrintToFile(arr1, PrintFile);
}
ifstream ReadFile("output.txt");
ReadFromFile(arr2, ReadFile);
只需在 PrintToFile() 之后、ReadFromFile() 的下一個操作之前關閉 PrintFile。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.