簡體   English   中英

如何從現有目錄讀取txt文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM