Нужна помощь в получении новой строки при записи в файл - PullRequest
0 голосов
/ 24 марта 2019

У меня есть endl, но он не входит в мой файл, поэтому, когда я вхожу в более чем 1 строку, все это в одной строке в блокноте.

Я пробовал:

codeFile << codeLine; codeFile << endl; </p>

Я также пытался добавить "\ n" к строке, добавив в нее постоянную строку, но она не работает.

//Writing Coded Lines to File:
        if(codeFile)
        {
            //Relaying Feedback to User:
            cout << "File has been successfully opened/created" << endl;
            cout << "\nWriting to file..." << endl;

            for(int i = 0; i < lines; i++)
            {
                //Getting Non-Coded Line from User:
                cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
                cin.getline(line, length);

                //Creating Copy of Line:
                strcpy(cline, line);

                //Gathering Line Length:
                length = strlen(line);

                //Coding Line:
                codedLine = code(length, line, cline, sAlphabet);

                //Coded Line Test
                cout << codedLine;

                //Writing to File:
                codeFile << codedLine << endl;
            }
        }

        //Closing File:
        codeFile.close();

        cout << "\nFile has now been closed";
    }

1 Ответ

1 голос
/ 24 марта 2019

Cygwin проверяет систему POSIX и использует окончания строк Unix, а не окончания строк Windows, понятные NotePad.

Замена endl на '\n' не поможет.endl - это '\n' с последующей очисткой потока.

Лучшим вариантом является использование другого устройства чтения файлов, например WordPad, которое понимает окончания строк Unix.Альтернативы:

  • Измените ваш набор инструментов компилятора на тот, который не эмулирует операционную систему POSIX, или
  • Brute force строка Windows, заканчивающаяся \r\n, но это означает, что вашВ коде будет аналогичная проблема с неправильным окончанием строки в системе на основе Unix.
...