значение в переменной

Подскажите плиз

std::string str; // объявили переменную типа стринг 
FunctionName(param_1, param_2, &str); // функция добавила в строку символы 
// после выполнения FunctionName переменная str = "hello"


unsigned char* charArr = (unsigned char*)str.c_str(); 
// charArr что то из следующего = 
//      {0x68, 0x65, 0x6c, 0x6c, 0x6f}      - есть там ноль или нет ноля ?
// или  {'h', 'e', 'l', 'l', 'o', '\0'}     - если есть 0 то каким символом или кодом символа он представлен ? 
// или  {0x68, 0x65, 0x6c, 0x6c, 0x6f, ???} - если есть 0 то каким символом или кодом символа он представлен ? 

теперь если str = "";
charArr так же не содержит символов

Что происходит - компилятор оптимизировал присвоив charArr ссылку или указатель на str ???
Как правильно задать значение charArr чтобы после изменения str - charArr не оказался так же изменённым ???


Ответы (1 шт):

Автор решения: AlexGlebe

Вопрос : как правильно скопировать данные в unsigned char* charArr или unsigned char charArr[] - чтобы можно было изменять str

создаёте массив нужного размера + дополнительный байт для конца строки '\00'

unsigned char* charArr = new unsigned char[str.size()+1];

копируете строку в массив

memcpy(charArr,str.c_str(),str.size()+1);
→ Ссылка