donc donné:sortie char * à std :: string C++
struct MemoryStruct {
char *memory;
size_t size;
};
char* memory
détient un retour boucle, doc XML.
que je fais:
if(chunk.memory) {
std::cout << "char size is " << sizeof(chunk.memory) << std::endl;
std::string s = "";
for (int c = 0; c<sizeof(chunk.memory); c++) {
s.push_back(chunk.memory[c]);
}
std::cout << "s: " << s.c_str() << std::endl;
}
Je ne reçois retour <?xm
Alors sizeof()
je pense est de retour le total des octets dans le char *
Comment puis-je obtenir la valeur réelle est un char*
. Donc, fondamentalement, le retour de la boucle entière. Quelle est 5 lignes de XML?
'sizeof' sur un' char * 'retourne la taille du pointeur, pas le nombre de caractères dans la chaîne. Utilisez 'strlen (chunk.memory)' pour obtenir la longueur de la chaîne (en supposant qu'elle soit terminée par un caractère nul). Et il n'y a pas besoin de 'push_back' chaque caractère individuellement,' std :: string' a un constructeur qui accepte 'char const *' pour une chaîne terminée par un caractère nul. 'std :: string s (chunk.memory);' suffira. Si ce n'est pas une terminaison nulle, utilisez 's (chunk.memory, str_length);' – Praetorian