編輯:
讀/寫數據:
void createfile()
{
ofstream file_handle("test.txt");
if (!file_handle)
return;
//add record:
file_handle << "firstname1" << endl;
file_handle << "lastname1" << endl;
file_handle << "college1" << endl;
file_handle << "1001" << endl;
//add another record:
file_handle << "firstname2" << endl;
file_handle << "lastname2" << endl;
file_handle << "college2" << endl;
file_handle << "1002" << endl;
//remember each record is 4 lines, each field is single line
//this is the file format
}
int main()
{
createfile();
ifstream fin("test.txt");
if (!fin)
{
cout << "file not found" << endl;
return 0;
}
ofstream fout("out.txt");//note, it's a different name than input file
if (!fout)
{
cout << "cannot create new file" << endl;
return 0;
}
char buffer[1000];
while (fin)
{
cout << "attempting to read record:\n";
for (int i = 0; i < 4; i++)
{
fin.getline(buffer, 1000, '\n');
if (!fin) break;
cout << buffer << endl;//write to screen
fout << buffer << endl;//write to file
if (i == 3)
{
//buffer is expected to be a number!
int number = atoi(buffer);
//multiply by random number 2, just testing
cout << number * 2 << endl;
}
}
}
return 0;
}
只要創建一個循環,並要求輸入新的文件名是否錯誤。
int main()
{
ifstream indata;
string fname;
for (;;)
{
cout << "enter fname, zero to exit\n";
cin >> fname;
if (fname == "0")
return 0;
indata.open(fname);
if (indata)
break;//file is valid and has been opened now
cout << "file not found, try again\n";
}
return 0;
}
所以這真的很有幫助,但它如何知道正確的文件名是什麼,因爲文件是一個字符串,我可以輸入不同的名稱,它會接受所有這些名稱。我想要文件名是特定的 –
這是一個非常簡單的任務。 Galik的答案完全符合作業要求。如果文件名錯誤,則文件不在計算機上,打開操作失敗。沒有別的了。如果第一次出現錯誤,我會提出一個更加花哨的版本,要求重新進入,現在不要擔心。下一步是爲'outdata'創建一個文件。這次如果文件不在計算機上並不重要,程序將創建文件並準備好寫入。只要確保爲'outdata'輸入了不同的文件名。 –
所以我想最讓我感到困惑的是,我有一個數據列表,名稱院校和一個數字,我試圖打開文件時輸出,我不明白如何讓他們輸出。此外,當我有indata.open(文件)打開是紅色的,不會工作 –