str1 и str2 являются строковыми объектами, которые пишут текст.
Мне бы хотелось, чтобы компиляторы потерпели неудачу в таких операторах, как объявление буфера, и мне все равно, какой старый код он нарушает.Если вы все еще строите его, вы все равно можете исправить его и вставить const.
Вам нужно изменить объявление вектора, потому что strlen остановится на первом нулевом символе.Если бы вы сделали
char buffer[] = "body\0body";
, то sizeof (буфер) фактически дал бы вам то, что вы хотите, хотя вы также получите конечный нулевой терминатор.
Как только ваш вектор mainStrустановить правильно, вы могли бы сделать:
std::string strConcat;
strConcat.reserve( str1.size() + str2.size() + mainStr.size() );
strConcat.assign(str1);
strConcat.append(mainStr.begin(), mainStr.end());
strConcat.append(str2);
, если вектор был установлен с использованием буфера, buffer + sizeof (buffer) -1