«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как объединить строковые и символьные литералы в C++?

Как объединить строковые и символьные литералы в C++?

Опубликовано 3 ноября 2024 г.
Просматривать:980

How to Concatenate String Literals and Character Literals in C  ?

Строковые и символьные литералы в C

При попытке объединить строковые литералы с символьными литералами в C может произойти неожиданное поведение. Например:

string str = "ab"   'c';
cout 

Этот код выдает непредсказуемый результат, поскольку оператор " " не определен для объединения строковых и символьных литералов. Вместо этого компилятор обрабатывает строковый литерал как строку в стиле C (указатель const char) и добавляет расширенное int-значение символьного литерала к адресу строкового литерала. Это приводит к неопределенному поведению.

Чтобы избежать этой проблемы, перед конкатенацией явно преобразуйте символьный литерал в строку:

std::string str = std::string("ab")   'c';

Альтернативно используйте конкатенацию для достижения желаемого результата:

std::string str = "ab";
str  = 'c';

Во втором фрагменте кода строковый объект имеет перегруженный оператор " ", который выполняет намеченную конкатенацию.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3