В визуальной студии max_size () составляет 4294967294 символа, примерно 4 ГБ. Было бы интересно, если бы вы могли рассказать нам, как вы рискуете превысить это количество символов.
Если проблема возникает не часто и речь идет только об отказоустойчивости, тогда
myConcatStr(string str1, string str2)
{
if (str1.length() + str2.length()) <= str1.max_size() // if there is no overflow problem
str1.append(str2); // use stl append
else
//use alternate method instead or throw an exception
}