[英]How to read a txt file from an existing directory
我正在嘗試從我的目錄中讀取一個 txt 文件,這是我到目前為止所得到的。 它編譯但不打印任何內容。
char printFile() {
fstream file("proj1_test1.txt");
char file01;
char page[5][6];
file.open("proj1_test1.txt");
for(int i = 0; i < numOfRows; i++){
for(int j = 0; j < numOfColumns; j++){
file >> file01;
page[i][j] = file01;
//cout << page[i][j] << endl;
}
}
cout << "file loaded " << endl;
cout << file << endl;
file.close();
return 0;
}
我試圖閱讀和打印的文件包含這個
F F R R R
F F R R R
F F R R R
F F R R R
F F R R R
F F R R R
fstream file("proj1_test1.txt");
打開了文件。
file.open("proj1_test1.txt");
沒有先關閉它就再次打開了文件。 打開已打開的文件流會將文件流置於錯誤狀態,必須先clear
該狀態,然后才能對其進行讀取或寫入。
修復:刪除file.open("proj1_test1.txt");
警告:正在使用相對路徑打開此文件。 正如問題的評論中指出的那樣,程序不一定與可執行文件從同一位置運行。 更多信息的搜索詞:工作目錄。 如果在上述更正后文件仍然無法打開,請確保該程序與您要打開的文件在同一文件夾中運行。 getcwd
函數可能會對此有所幫助。
建議:在對任何流進行任何操作(包括打開、讀取和寫入)之后,測試流狀態以確保操作成功。 例子:
fstream file("proj1_test1.txt");
if (file)
{
// do stuff with file
}
else
{
// failed to open. Warn user
}
閱讀時你想要一些類似的東西
if (file >> page[i][j])
{
// read successful. can use page[i][j]
}
else
{
// read failed. Warn user
// do not use page[i][j]
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.