Не может написать пробел, используя 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 ответ

Решение

В зависимости от используемой 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();
       }
    }
Другие вопросы по тегам