如何从现有目录中读取txt文件

时间:2018-02-21 22:59:36

标签: c++

我正在尝试从我的目录中读取一个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

1 个答案:

答案 0 :(得分:3)

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]
}