Исходя из вашего ответа на ответ Натсо , кажется, что у вас есть фундаментальное недопонимание того, что происходит. Двухсимвольная последовательность \n
не является символом новой строки. Но мы так представляем этот символ в коде, потому что фактический символ трудно увидеть. Компилятор знает, что когда он встречает эту двухсимвольную последовательность в контексте строкового литерала, он должен интерпретировать их как настоящий символ новой строки, который имеет значение ASCII 10.
Если вы напечатаете эту двухсимвольную последовательность на консоли, вы ее не увидите. Вместо этого вы увидите перемещение курсора на следующую строку. Это потому, что компилятор уже заменил эти два символа на символ новой строки, поэтому на самом деле это символ новой строки, который был отправлен на консоль.
Если у вас есть ввод для вашей программы, который содержит обратную косую черту и строчные N , и вы хотите преобразовать их в символы новой строки, тогда ответ Зака может быть достаточно. Но если вы хотите, чтобы ваша программа разрешала вводить обратную косую черту во входных данных, вам понадобится какой-то способ для ввода, чтобы указать, что обратный слеш, за которым следует нижний регистр N , действительно должен быть этими двумя символами. Обычный способ сделать это состоит в том, чтобы поставить перед обратной косой чертой еще одну обратную косую черту, экранирующую . Если в этой ситуации вы используете код Зака, вы можете в конечном итоге превратить трехсимвольную последовательность \\n
в двухсимвольную последовательность, состоящую из обратной косой черты, за которой следует символ новой строки.
Надежный способ чтения строк, использующих экранирование от обратной косой черты, - это анализировать их по одному символу за раз, начиная с начала ввода. Копируйте символы из входных данных в выходные, кроме случаев, когда вы сталкиваетесь с обратной косой чертой. В этом случае проверьте также, какой следующий символ. Если это другая обратная косая черта, скопируйте одну обратную косую черту в вывод. Если это строчная буква N , тогда введите символ новой строки в вывод. Если это какой-то другой персонаж, значит, все, что вы определяете, будет правильным. (Примеры включают отклонение всего ввода как ошибочного, притворство, что обратный слеш отсутствует, и пропуск как обратного слеша, так и следующего символа.)
Если вы пытаетесь наблюдать содержимое переменной в отладчике, возможно, что отладчик обнаружит символ новой строки, преобразует его обратно в двухсимвольную последовательность \n
. Итак, если вы перебираете свой код, пытаясь выяснить, что в нем есть, вы можете стать жертвой полезности отладчика. И в большинстве ситуаций это действительно помогает. Программисты обычно хотят точно знать, какие символы находятся в строке; их меньше беспокоит то, как эти символы будут отображаться на экране.