代码之家  ›  专栏  ›  技术社区  ›  rkellerm

从std::string中删除空值

  •  2
  • rkellerm  · 技术社区  · 14 年前

    我正在使用一个第三方代码,它有自己的std::ostream operator<<实现来处理第三方的类型。 我正在使用stringstream进行此输出-例如:

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

    此结构包含设置为空的指针成员。使用运算符时<<和 str() 我明白了(通过gdb- print str )有许多前导'\000'字符,然后是我需要的字符串数据。

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

    准确的代码在Windows VC++中运行良好。

    谢谢您。

    2 回复  |  直到 14 年前
        1
  •  2
  •   onof    14 年前

    你在找这样的训练吗?

    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();
    }
    
        2
  •  2
  •   Zero    9 年前

    如果你有 促进 可用,如下所示的内容将用另一个值替换字符串中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