На мой взгляд - нормально. Если не работает, то надо смотреть под отладчиком, что там за символы получаются.
А на входе UTF-8, или что-то другое?
P. S. Непонятно, зачем так сложно:
size_t newsize = strlen(cmdStr_res.c_str()) + 1;
вместо
cmdStr_res.length()