3 Réponses :
est votre uint8 * code> chaîne null-terminé? Si oui, vous pouvez simplement faire:
std::string mystring(data);
Quand il y a une longueur, les données ne sont probablement pas résolues null
Et il est probablement préférable de le préciser explicitement de toute façon; Tout ce qui va faire est de rechercher la longueur de toute façon.
De plus, vous supposez qu'il n'y a pas de caractère «\ 0» intégré dans la chaîne. La STD :: String ne met aucun accent particulier sur le caractère "\ 0".
Pour une size de cas de (UINT8)! = Tailleof (Char), vous pouvez faire:
std::string output( len, 0 ); for ( size_t i = 0; i < len; ++i ) output[ i ] = static_cast<char>( data[ i ] );
Tailleof (UINT8)! = Tailleof (Char) Code> est impossible.
Tailleof code> est en unités de
char code>, donc si
Char code> est supérieur à 8 bits, il n'y a aucun moyen d'avoir un type 8 bits, c'est-à-dire
uint8 code> ne peut exister.
Si vous ne voulez pas convertir le codage, cela fonctionnera:
std::string s( data, data+len );
On dirait un duplicata de: Stackoverflow.com/q/1673445/50079
Vote à la réouverture, car cela vient de
uint8_t code> et l'autre est
char code> qui pourrait être différent sur des périphériques insensés.