La conversion d'une chaîne de u_int8_t tableau en C++
Je veux un std::string objet (comme un nom) à un u_int8_t tableau en C++. L'
fonction reinterpret_cast<const uint8_t*>
rejette ma chaîne. Et depuis que je suis de codage à l'aide de NS-3, certains avertissements sont interprétés comme des erreurs.
- Afficher votre code. Qu'entendez-vous par "objet string"? std::string ou un pointeur sur un char.
- un std::string objet.
Vous devez vous connecter pour publier un commentaire.
Si vous voulez un pointeur vers le
string
's de données:Si vous voulez une copie du
string
's de données:uint8_t
, paschar
, il est sûr de supposer qu'il ne veut pas d'un C-chaîne de style.std::vector
est great stuff. Crée une simple copie sans memcpy ou d'autres de style C des trucs qui aime le pop-up dans les réponses à ces sortes de questions..c_str()
au lieu de&myString[0]
depuisstd::string
n'est pas obligatoire pour être contiguës.memmove
(peut-être mêmememcpy
) sous le capot.std::string
n'est pas nécessaire d'être contiguës, maisstd::string::operator[]
est. À partir de Herb Sutter: "[C++2003] ne nécessitent &str[0] pour la toux jusqu'à un pointeur de chaîne contiguë de données (mais pas nécessairement nul!)" Voir lib.chaîne de caractères.ops et lib.chaîne de caractères.accès....for any basic_string object s, the identity &*(s.begin() + n) == &*s.begin() + n shall hold for all values of n such that 0 <= n < s.size().
std::string
a contiguë de stockage, et si vous colle les différentes parties ensemble (c'est à dire le.c_str()
de la fonction O(1), donc pas de copie de la mémoire tampon),&s[0]
et lastd::string::data()´ function gives you a null-terminated character array nonetheless. On the other hand, all popular current (pre-c++11) implementations do have contiguous
std::string de stockage...Chaîne objets ont une
.c_str()
membre de la fonction qui retourne unconst char*
. Ce pointeur peut être converti en unconst uint8_t*
:Noter que ce pointeur ne sera valable aussi longtemps que la chaîne d'origine de l'objet n'est pas modifié ou détruit.