значение в переменной
Подскажите плиз
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);