【问题标题】:cannot write a space using ofstream, but endl works fine无法使用 ofstream 写入空间,但 endl 工作正常
【发布时间】:2017-09-02 04:00:53
【问题描述】:

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

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 分隔整数。

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

【问题讨论】:

  • 你试过用双引号代替单引号吗? (作为字符串而不是字符)?
  • @John3136 是的,我已将“”替换为“”。我得到了相同的结果。
  • 胡言乱语到底是什么意思?
  • @rici 执行代码时会生成以下文本。 '‷'〃‰‰‰‱‵‹‶‰‰〃‰'‰‸‸‰‰‰‱‰‰'‰‷‰‶‵‴‰'‰‰‰‴'‰‷〃‰‰‰‵‰‹ ″‱‰‴‰‵‰‰‷‰‰‰″‴‰‰‱‰″‰‰‶‹″′‰‰‰‷‱‹'

标签: c++ ofstream endl


【解决方案1】:

根据您使用的 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();
       }
    }

【讨论】:

  • 就是这样,问题不是用 endl 结束文件。非常感谢。
猜你喜欢
  • 2019-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-22
  • 1970-01-01
  • 2016-09-01
  • 1970-01-01
相关资源
最近更新 更多