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
.В частности, с криптографией вы просто знаете, что кто-то попытается сломать ее, вставив в нее нули, и использование std::string::data()
не позволяет вам лениво делать предположения о базовых битах в строке.
, очевидно, речь идет о C++. я исправил опечатки –
Да, вы правы, спасибо – Vic