J'utilise C++, Visual Studio 2010 Premium sur Windows 7, et dans ma demande j'ai un std :: variable chaîne qui échoue sur append :(...C++ problème std :: string en utilisant VC10
la situation est la variable de chaîne contient une énorme quantité de caractères en annexe à des moments différents, la première fois que j'ajoute par exemple 7609 octets, deuxième fois 8184 et enfin 1463, quelque chose comme
std::string str;
long bytesRead;
char buffer[BUFFER_SIZE];
do {
bytesRead = ReadChars(buffer, BUFFER_SIZE -1);
buffer[bytesRead] = 0; // I omitted this line before, but it was in the original code
if (bytesRead > 0)
str += buffer; // I'm already taking care of the char 0 at the end :)
} while (bytesRead > 0);
donc chaque fois que j'appelle + = (ou ajouter, même résultat) il ajoute une chaîne supplémentaire (7 ou 8 derniers caractères du tampon original) par exemple
tampon d'origine se termine "chaîne ajoutée"
après append, str se termine "string appendedappended"
ne quelqu'un sait si cela est un problème connu? ou peut-être si je raté quelque chose
Je mets cela dans les commentaires là-bas, mais peut-être mieux si je le mets ici aussi
ReadChars: lire un bounch de caractères et retourne le nombre d'octets lus
bytesRead: si on le lit, il est> 0 ... donc est autorisé à traiter comme tampon ASCIIZ,
J'ai essayé avec la fonction append, mais obtenir même comportement (comme celui-ci str.append (tampon);)
Cordialement Jorge
Comment prenez-vous soin du caractère \ 0 à la fin de la mémoire tampon? Cela ressemble aux résultats si vous ne l'avez pas fait. S'il vous plaît montrer votre code sans omettre quelque chose d'important. –
Pouvez-vous publier l'implémentation de ReadChars?Le bug est presque certainement dans la gestion de cette fonction de 'buffer' – JaredPar
Vous mettez probablement le caractère nul au mauvais décalage dans' buffer' – Marlon