該程序接受輸入,逐個字符地寫入文件,計算輸入的字符數量,然後在最後將其複製到一個字符數組中。該程序工作得很好,直到我們得到以下片段file.getline(arr, inputLength);
。它會更改.txt文件數據並僅返回原始輸入的第一個字符。寫入和讀取同一個文件
任何想法?
#include <iostream>
#include <fstream>
using namespace std;
int getLine(char *& arr);
int main() {
char * arr = NULL;
cout << "Write something: ";
getLine(arr);
return 0;
}
int getLine(char *& arr) {
fstream file("temp.txt");
char input = '\0'; //initialize
int inputLength = 0; //initialize
if (file.is_open()) {
while (input != '\n') { //while the end of this line is not reached
input = cin.get(); //get each single character
file << input; //write it on a .txt file
inputLength++; //count the number of characters entered
}
arr = new char[inputLength]; //dynamically allocate memory for this array
file.getline(arr, inputLength); //HERE IS THE PROBLEM!!! ***
cout << "Count : " << inputLength << endl; //test counter
cout << "Array : " << arr << endl; //test line copy
file.close();
return 1;
}
return 0;
}
這可能是關於字符串沒有被寫入txt文件。對於正確的設計,如果可能的話,你應該考慮在磁盤上做最少的IO。您應該使用內存並在最後將您的數據寫入txt文件。 –
你能解釋一下,通過使用代碼片段? @st。 – Peons1982
另外,只有在註釋發生問題的行時,數據才能正確寫入txt文件。 @st。 – Peons1982