не могу написать пробел с помощью 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.

Кроме того, если есть место, которое объясняет это более подробно, пожалуйста, не стесняйтесь давать ссылку на него. Вся помощь приветствуется.


person NateEkat    schedule 06.04.2017    source источник
comment
Вы пробовали пробел в двойных кавычках вместо одинарных? (как в строке вместо символа)?   -  person John3136    schedule 07.04.2017
comment
@John3136 John3136 Да, я заменил '' на . Я получаю те же результаты.   -  person NateEkat    schedule 07.04.2017
comment
Что именно вы имеете в виду под бредом?   -  person rici    schedule 07.04.2017
comment
@rici При выполнении кода создается следующий текст. '‷′″‰‰‰‱‵‹‶‰‰″‰′‰‰‸‸‰‰‰‱‰‰‰′‰‷‰‶‵‴‰′‰‰‰‴′‰‰″‰‰″‰‰ ″‱‰‴‰‵‰‰‰‷‰‰‰″‴‰‰‱‰″‰‰‶‹″′‰‰‰‷‱‹'   -  person NateEkat    schedule 07.04.2017


Ответы (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();
       }
    }
person Jish    schedule 06.04.2017
comment
Вот и все, проблема заключалась в том, что файл не заканчивался endl. Большое спасибо. - person NateEkat; 07.04.2017