std::string::data
может показаться достаточным и наиболее эффективным. Если вы хотите иметь неконстантную память для манипуляции (странно для шифрования), вы можете скопировать данные в буфер, используя memcpy :
unsigned char buffer[mystring.length()];
memcpy(buffer, mystring.data(), mystring.length());
Фанаты STL рекомендуют вам использовать std :: copy вместо:
std::copy(mystring.begin(), mystring.end(), buffer);
но в этом нет ничего особенного. Если вам нужно нулевое завершение, используйте std::string::c_str()
и различные методы дублирования строк, которые были предоставлены другими, но я бы обычно этого избегал и просто запрашивал length
. В частности, с помощью криптографии вы просто знаете, что кто-то попытается взломать его, добавив в него значения null, и использование std::string::data()
отговаривает вас от ленивых предположений о базовых битах в строке.