Ao tentar concatenar literais de string com literais de caracteres em C , pode ocorrer um comportamento inesperado. Por exemplo:
string str = "ab" 'c';
cout Este código produz uma saída imprevisível porque o operador " " não está definido para combinar literais de string e literais de caracteres. Em vez disso, o compilador trata a string literal como uma string no estilo C (um ponteiro const char) e adiciona o valor int promovido do literal de caractere ao endereço da string literal. Isso resulta em um comportamento indefinido.
Para evitar esse problema, converta explicitamente o literal de caractere em uma string antes da concatenação:
std::string str = std::string("ab") 'c';
Como alternativa, use a concatenação para obter o resultado desejado:
std::string str = "ab";
str = 'c';
No segundo trecho de código, o objeto string possui um operador " " sobrecarregado que executa a concatenação pretendida.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3