При попытке объединить строковые литералы с символьными литералами в 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