17

Вопрос по windows, .net, c# – Почему «\ n» дает новую строку в Windows?

Маркер переноса строки в Windows должен бытьCR+LF в то время как в Unix это простоLF.

Поэтому, когда я использую что-то вродеConsole.Write("line1\nline2");почему это работает "правильно" и дать мне две строки? Я ожидаю этого\n не работать, а только комбо\r\n должно сработать.

  • \nError: User Rate Limit ExceededConsole.WriteError: User Rate Limit Exceeded\rError: User Rate Limit Exceeded

    от
  • Error: User Rate Limit Exceededtype myFileWithSlashNDelimitersError: User Rate Limit Exceeded

    от
  • Error: User Rate Limit Exceeded

    от
  • Скорее всего, C # неявно делает преобразование для вас.

    от Brad Christie
  • Это просто поведение обработчика консоли по умолчанию, которое назначено для Console.Out по умолчанию. Вам не повезет, если вы перенаправите вывод процесса консоли в файл и откроете этот файл в редакторе.

    от Hans Passant
  • \ n произвел новую строку в Windows с момента дебюта Visual Studio. Я лично помню, как использовал его еще в VS6 в начале / середине 90-х.

    от Escobar Ceaser
  • Я печатаю эту строку в консоли командной строки, используяConsole.Write().

    от user1032613
  • Что вы используете для просмотра такого файла?

    от Oded
5 ответов
  • 0

    В системах * nix и Windows должно быть 2 строки

    \ n - символ перевода строки.. \ R - возврат каретки, он перемещает пишущий инструмент в начало строки.

    Большинство современных консолей / редакторов достаточно устойчивы, чтобы интерпретировать \ n как \ r \ n

  • 1

    По моему опыту

    когда вы выводите на консоль с помощью WriteLine (), он принимает escape-символ \ n. Когда вы используете StreamWriter и вызываете WriteLine (), вы нажимаете \ r \ n для перехода на новую строку. Я предполагаю, что консоль была запрограммирована на прием escape-символа \ n без возврата каретки \ r.

  • 16

    &

    & APOS; \ п APOS; символ перевода строки Традиционно это заставляло принтер свернуть бумагу на одну строчку вверх.; APOS; \ г; APOS; является символом возврата каретки, который традиционно заставлял головку принтера перемещаться к дальнему левому краю бумаги.

    На принтерах и консолях, которые интерпретируют символы таким образом, выводline1\nline2 было бы

    line1
         line2
    

    Многие консоли (и редакторы) будут интерпретировать \ n 'apos; означать, что вы хотите начать новую строкуand поместите курсор в начало этой новой строки. Это то, что вы видите здесь.

    Вы должны использоватьEnvironment.NewLine вместо того, чтобы жестко кодировать какие-либо конкретные константы.

  • 9

    Это просто стандартное поведение базовой консоли Windows. Нативное при

    ложение C будет делать то же самое, если вы выводите0x0A на консоль.

    Конечно, вы должны использовать Environment.NewLine для ваших новых линий. Environment.NewLine решает в\r\n в Windows а также\n в Unix-подобных системах.

  • 1

    Кодировки файлов! =

    Console интерпретация.

    Другими словами, в то время как «Стандарт Windows» изCR + LF существует для файлов, толькоLF, или же\n привело к соответствующему возврату каретки и новой интерпретации строки в окнах консоли.