""
- это const char[1]
(удерживая '\0'
).
Вы пытаетесь добавить к этому 'a'
- таким образом он превращается в указатель, адрес которого увеличивается по сравнению с 97
((int)'a'
== 97
). Теперь вы присваиваете std::string
этому адресу за пределами допустимого диапазона - это неопределенное поведение.
для достижения того, что вы хотите, вы можете использовать operator""s
для превратить const char[1]
в std::string
. Затем std::string::operator+
выполнит и правильно объединит все.
using namespace std::string_literals;
char start = 'a';
std::string out = ""s + start;
std::cout << "string: " << out << " - length: " << out.length() << std::endl;
вывод:
строка: a - длина: 1