从 std::string 中删除 NULL
我正在使用第三方代码,它有自己的 std::ostream 运算符 << 实现,来处理第三方的类型。 我使用 stringstream 来输出 - 例如:
string ToString(const thrdPartyType& structure)
{
stringstream outputStream;
outputStream<<structure;
return outputStream.str();
}
...
string str = ToString(structure);
...
该结构包含指针成员,这些成员被设置为 NULL。当使用运算符<<时并将 str()
赋值给字符串,我看到(通过 gdb - print str
)有许多前导 '\000' 字符,然后字符串数据我需要。
如何修剪这些 NULL 以便仅获取真实数据而不是空数据?
PS 确切的代码在 Windows VC++ 中运行良好...
谢谢。
I'm using a third party code which has its own implementation for std::ostream operator<<, to handle the third party's type.
I'm using stringstream for this output - like:
string ToString(const thrdPartyType& structure)
{
stringstream outputStream;
outputStream<<structure;
return outputStream.str();
}
...
string str = ToString(structure);
...
This structure contains pointer members, which are set to NULL. When using the operator<< and the assignment of str()
into a string, I see (via gdb - print str
) that there are many leading '\000' characters, then the string data I need.
How can I trim those NULLs in order to get only the real, not empty data?
P.S. The exact code works fine in Windows VC++...
Thank you.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您是否正在寻找这样的解决方法?
Are you looking for a workoround like this?
如果您有 boost 可用,类似下面的内容会将字符串中的所有 null 实例替换为另一个值。
例如
产生以下输出
If you have boost available, something like the following will replace all instances of null in a string with another value.
For example
Produces the following output