J'utilise un code tiers qui a sa propre implémentation pour l'opérateur std :: ostream < <, pour gérer le type de tiers. J'utilise stringstream pour cette sortie - comme:Supprimer les NULL de std :: string
string ToString(const thrdPartyType& structure)
{
stringstream outputStream;
outputStream<<structure;
return outputStream.str();
}
...
string str = ToString(structure);
...
Cette structure contient des membres de pointeur, qui sont des valeurs nulles. Lorsque vous utilisez l'opérateur < < et l'affectation de str()
dans une chaîne, je vois (via gdb - print str
) qu'il y a beaucoup de caractères '\ 000' en tête, puis les données de chaîne dont j'ai besoin.
Comment puis-je découper ces valeurs NULL pour obtenir uniquement les données réelles et non vides?
P.S. Le code exact fonctionne très bien dans Windows VC++ ...
Merci.
On dirait que le code tiers est cassé. Peut-être que vous devriez déposer un rapport de bogue. –
Premièrement, outputStream est-il imprimable? Sur quelle plateforme utilisez-vous gdb? Si c'est l'impression des pointeurs sont-ils 64-bit où il ne fonctionne pas, ce qui peut expliquer pourquoi vous voyez plus de caractères zéro? – CashCow