不能使用ofstream写一个空格,但是endl工作得很好

时间:2017-04-06 22:29:09

标签: c++ ofstream endl

好的,这似乎是一个简单的问题;但我似乎无法找到答案。我的代码如下:

void writeFile(int grid[9][9]) {
   ofstream fout ("myGame2.txt");
   if (fout.is_open()) {
      for (int i = 0; i < 9; i++) {
         for (int j = 0; j < 9; j++) {
            fout << grid[i][j] << ' ';
         }
      }
      fout.close();
   }
}

这会产生一个充满乱语的文件:

‷′″‰‰‰‱‵‹‶‰‰″‰′‰‰‸‸‰‰‰‱‰‰‰′‰‷‰‶‵‴‰′‰‰‰‴′‰‷″‰‰‰‵‰‹″‱‰‴‰‵‰‰‰‷‌​‰‰‰″‴‰‰‱‰″‰‰‶‹″′‰‰‰‷‌​‱‹'

但是如果我用endl替换空格字符,它输出就好了。

fout << grid[i][j] << endl;

所以我的问题变成了,如何将我的数组输出到文件中,并用空格而不是endl分隔整数。

此外,如果有一个位置可以更详细地解释这一点,请随时链接。感谢所有帮助。

1 个答案:

答案 0 :(得分:0)

根据您使用的IDE,结束没有endl的文件会导致问题。 解决方案:

void writeFile(int grid[9][9]) {
   ofstream fout ("myGame2.txt");
   if (fout.is_open()) {
      for (int i = 0; i < 9; i++) {
         for (int j = 0; j < 9; j++) {
            fout << grid[i][j] << ' ';
         }
      }
      fout << endl;
      fout.close();
   }
}

或者,如果您希望它像网格一样打印而不是单行文本:

 void writeFile(int grid[9][9]) {
       ofstream fout ("myGame2.txt");
       if (fout.is_open()) {
          for (int i = 0; i < 9; i++) {
             for (int j = 0; j < 9; j++) {
                fout << grid[i][j] << ' ';
             }
             fout << endl;
          }
          fout.close();
       }
    }