C ++ печатает правильно на терминал, но не на выходной файл - PullRequest
0 голосов
/ 21 февраля 2020

Начинающий c ++ кодировщик, и, похоже, не могу понять эту ошибку.

Я пытаюсь напечатать 256 чисел в отдельных строках в выходной файл. Кажется, это работает большую часть времени. Однако, когда все 256 чисел 0, вместо этого он печатает 256 символов в одной строке. Если я печатаю 2 0's в той же строке, он отлично работает, и если я удаляю следующую строку, он также отлично работает.

Я попытался очистить ostream, но это не помогло. Я думал, что это может быть проблема с unsigned int, но приведение и to_string() также не помогли. Код печатается идеально в терминал, но не в файл.

Любая помощь будет принята с благодарностью!

vector<unsigned int> freqs(256);

ofstream outfile(outFileName);

for (int i = 0; i < 256; i++) {
    outfile << freqs[i];
    outfile << '\n';
}

1 Ответ

0 голосов
/ 21 февраля 2020

Попробуйте использовать оператор endl. endl создает новую строку, такую ​​как \n, но не указывается для платформы c.

#include <fstream>

using namespace std;

int main()
{

    vector<unsigned int> freqs(256);

    ofstream fileToWriteTo;
    fileToWriteTo.open("file.txt");

    for (int i = 0; i < 256; i++)
    {
        fileToWriteTo << freqs.at(i) << endl;
    }

    fileToWriteTo.close();

}

Редактировать: этот код, приведенный ниже, работал для меня совершенно нормально. Что вы используете для компиляции? (Хорошо, я имею в виду, что он создал файл с 256 0s на разных строках)

#include <fstream>
#include <vector>

using namespace std;

int main()
{

    vector<unsigned int> freqs(256);

    ofstream outfile("outFileName.txt");

    for (int i = 0; i < 256; i++)
    {
        outfile << freqs[i];
        outfile << '\n';
    }

}
...