Код, который вы опубликовали, неверен, так как он всегда будет читать maxLength
символов из исходной строки. В частности, это означает, что он будет читать после конца пустой строки, когда str
равно NULL. Это будет работать вместо этого, предполагая, что str
заканчивается нулем:
void MyClass::setVar(const char *str)
{
if (str==NULL)
mStr.clear();
else
mStr.assign(str, std::min(strlen(str), maxLength));
}