std::string::data
semble être suffisant et le plus efficace. Si vous voulez avoir une mémoire non-const à manipuler (étrange pour le chiffrement), vous pouvez copier les données vers un tampon à l'aide memcpy:
unsigned char buffer[mystring.length()];
memcpy(buffer, mystring.data(), mystring.length());
STL fanboys vous encourage à utiliser std::copy à la place:
std::copy(mystring.begin(), mystring.end(), buffer);
mais il n'y a vraiment pas grand-chose à cet égard. Si vous avez besoin d'une terminaison nulle, utilisez std::string::c_str()
et les diverses techniques de duplication de chaînes que d'autres ont fournies, mais j'éviterais généralement cela et demanderais simplement le length
.Particulièrement avec la cryptographie, vous savez juste que quelqu'un va essayer de le casser en y insérant des zéros, et en utilisant std::string::data()
vous décourage de faire paresseusement des suppositions sur les bits sous-jacents dans la chaîne.
évidemment c'est sur C++. J'ai corrigé les fautes de frappe –
ouais tu as raison, merci – Vic