Нужна помощь в получении новой строки при записи в файл

#c #filestream #fstream #ofstream

#c #filestream #fstream #ofstream

Вопрос:

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

Я пытался:

CodeFile << Кодовая строка; CodeFile << endl;

Я также пытался добавить » 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. Вы случайно не используете cygwn, не так ли?

2. Если вы говорите о Windows notepad.exe это разбивает строки только на » r n», но это визуальная вещь, связанная с приложением. Ваш символ новой строки все еще присутствует. Кроме того, не используйте std::endl, вместо этого используйте ‘n’.

3. Я использую cygwin. Но я попробую это.

4. Это сработало, спасибо! «/r / n»

Ответ №1:

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

Замена endl на 'n' не поможет. endl это 'n' , за которым следует потоковая очистка.

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

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