2010-12-22 3 views

Répondre

8

Si vous ne voulez pas convertir l'encodage , cela fonctionnera:

std::string s(data, data+len); 

Si vous voulez convertir UTF-8 en tout encodage système est utilisé par votre plate-forme, vous devez utiliser des moyens spécifiques à la plateforme.

1

Votre chaîne uint8* est-elle terminée par un caractère nul? Si oui, vous pouvez juste faire:

std::string mystring(data); 
+0

quand il y a une longueur, les données ne sont probablement pas terminées par zéro – Milan

+0

Et il est probablement préférable de le spécifier explicitement quand même; tout ce qui va faire, c'est chercher de nouveau la longueur de toute façon. – GManNickG

+0

Vous supposez également qu'il n'y a pas de caractère '\ 0' dans la chaîne. La chaîne std :: ne met aucun accent particulier sur le caractère '\ 0'. –

0

Pour certains sizeof cas (uint8) = sizeof (char), vous pouvez faire:

std::string output(len, 0); 
for (size_t i = 0; i < len; ++i) 
    output[ i ] = static_cast<char>(data[ i ]); 
+2

'sizeof (uint8)! = Sizeof (char)' est impossible. 'sizeof' est en unités de' char', donc si 'char' est plus grand que 8 bits, il n'y a aucun moyen d'avoir un type de 8 bits, c'est-à-dire que' uint8' ne peut pas exister. –

Questions connexes