В чем разница между "n" или "n " в C++?
Я видел новую строку n
использовал 2 разных способа в нескольких примерах кода, которые я рассматривал. Первый 'n'
и "n"
. В чем разница и почему вы используете 'n'
?
Я понимаю 'n'
представляет собой char и "n"
представляет строку, но имеет ли это значение?
5 ответов
'\n'
- символьная константа.
"\n"
указатель на массив символов, что эквивалентно {'\n', ''}
(\n
плюс нуль-Терминатор)
редактировать
Я понимаю, что объяснил разницу, но не ответил на вопрос.
какой из них использовать, зависит от контекста. Вы используете '\n'
Если вы вызываете функцию, которая ожидает героя, и "\n"
, если он ожидает строку.
'\n'
является буквальным символом. "\n"
является строковым литералом (массив символов, в основном).
разница не имеет значения, если вы пишете на обычный поток. std::cout << "\n";
аналогично std::cout << '\n';
.
почти в любом другом контексте разница имеет значение. Символ вообще не является взаимозаменяемым с массивом символов или со строкой.
например std::string
имеет конструктор, который принимает const char*
, но у него нет конструктор, который принимает char
. Вы можете написать std::string("\n");
, а std::string('\n');
не компилируется.
std::string
и имеет конструктор, который принимает char
и сколько раз, чтобы дублировать его. У него нет того, который принимает const char*
и сколько раз, чтобы дублировать его. Так что вы можете написать std::string(5,'\n')
и получаем строку, состоящую из 5 символов новой строки в строку. Ты не можешь писать!--13-->.
любая функция или операция, которую вы используете, скажет вам, определена ли она для символа, для строки в стиле C, для обоих через перегрузку или ни для одного.
'\n'
это char
константы.
"\n"
- это const char[2]
.
так Использование что-то вроде этого:
char newLine = '\n';
const char* charPointerStringNewLine = "\n"; // implicit conversion
const char charStringNewLine[2] = "\n";
string stringNewLine( "\n" );
короче говоря: один-указатель на массив символов, другой-один символ.
одинарные кавычки обозначают символ, а двойные кавычки - строку. В зависимости от контекста можно выбрать тип данных для работы.
Я понимаю, что "\n " представляет собой символ, а "/n " представляет строку, но имеет ли это значение?
если вы понимаете это, то должно быть ясно, что это действительно имеет значение. Перегруженные функции в стандартной библиотеке C++ часто скрывают этот факт, поэтому, возможно, более полезным будет пример из C:putchar
принимает один символ, так что только '\n'
является правильным, тогда как puts
и printf
взять строку, и в этом случае, только "\n"
является правильным.