Я использую сторонний код, который имеет собственную реализацию для оператора std :: ostream < <, для обработки типа третьей стороны. Я использую stringstream для этого выхода - как:Удалить NULL из std :: string
string ToString(const thrdPartyType& structure)
{
stringstream outputStream;
outputStream<<structure;
return outputStream.str();
}
...
string str = ToString(structure);
...
Эта структура содержит элементы указателя, которые установлены в NULL. При использовании оператора < < и присвоении str()
в строку, я вижу (через gdb - print str
), что есть много ведущих символов «\ 000», а затем строковые данные, которые мне нужны.
Как я могу обрезать эти NULL, чтобы получить только реальные, а не пустые данные?
P.S. Точный код отлично работает в Windows VC++ ...
Спасибо.
Это звучит так, как будто код третья сторона сломана. Может быть, вы должны подать отчет об ошибке. – 2010-11-25 15:16:05
Во-первых, outputStream для печати? На какой платформе вы используете gdb. Если это указатели печати, они 64-битные, где они не работают, что может объяснить, почему вы видите больше нулевых символов? – CashCow 2010-11-25 15:44:19