Вопрос про конструктор строк

string h;
h = 's' + "ss";// справа строка?
cout << endl << h;// выводит странный символ 
 
string h1('s'+"ss");// конструктор есть

Вопрос: какой тип в итоге получается если 's'= char, "ss"= const char[3], который при сложении скорее всего( я не уверена) преобразуется в const char*


Ответы (1 шт):

Автор решения: Harry

Если неохота пользоваться отладчиком etc, делаем так:

string h;
h = ' ' + "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
cout << endl << h;

И видим, что вывод идет GHIJKLMNOPQRSTUVWXYZ, т.е. пропущены 32 символа строки. Наверное, то, что ASCII-код пробела — 0x20 (32) — не простое совпадение? :)

Так что у вас просто получается строка далеко за пределами выделенной памяти, т.е. UB. На что там наткнется указатель, кто знает...

→ Ссылка