从std :: string中删除NULL

时间:2010-11-25 15:13:18

标签: c++ string null gdb stringstream

我正在使用第三方代码,它有自己的std :: ostream运算符<&lt ;,来处理第三方的类型。 我正在使用stringstream来输出 - 比如:

string ToString(const thrdPartyType& structure)
{
stringstream outputStream;
outputStream<<structure;
return outputStream.str();
}
...
string str = ToString(structure);
...

此结构包含指针成员,这些成员设置为NULL。当使用运算符&lt;&lt;并将str()分配到一个字符串中,我看到(通过gdb - print str)有许多前导'\ 000'字符,然后是我需要的字符串数据。

如何修剪这些NULL以便只获取真实数据而不是空数据?

P.S。确切的代码在Windows VC ++中运行良好...

谢谢。

2 个答案:

答案 0 :(得分:2)

你在寻找像这样的工作单吗?

string ToString(const thrdPartyType& structure)
{
   stringstream outputStream;
   outputStream << structure;

   stringstream workaround;
   while(! outputStream.eof ) {
   char t;
   outputStream >> t;
   if(t != '\0')
    workaround << t;
   }

   return workaround .str();
}

答案 1 :(得分:2)

如果您有提升,则以下内容将使用其他值替换字符串中的所有null实例。

boost::replace_all(str,boost::as_array(""),"NULL");

例如

char buf[10] = "hello";
string str(buf,buf+10);
boost::replace_all(str,boost::as_array(""),"NULL");
cout << str << endl;

生成以下输出

helloNULLNULLNULLNULLNULL