std::string::data
sembra essere sufficiente e più efficiente. Se si desidera avere una memoria non-const per manipolare (strano per la crittografia) è possibile copiare i dati in un buffer utilizzando memcpy:
unsigned char buffer[mystring.length()];
memcpy(buffer, mystring.data(), mystring.length());
fanboy STL incoraggio a utilizzare std::copy invece:
std::copy(mystring.begin(), mystring.end(), buffer);
ma non c'è davvero molto di positivo. Se è necessaria la terminazione nullo, utilizzare std::string::c_str()
e le varie tecniche di duplicazione delle stringhe fornite da altri utenti, ma in genere lo evito e faccio una query per lo length
.In particolare con la crittografia si sa solo che qualcuno cercherà di romperlo spingendo i valori null in esso, e usando std::string::data()
si scoraggia dal fare pigramente ipotesi sui bit sottostanti nella stringa.
fonte
2009-02-02 21:59:49
ovviamente si tratta di C++. Ho corretto gli errori di battitura –
sì, hai ragione, grazie – Vic