如何在C中从stringstream中替换一些字符?

我需要从VC项目中的字符串流中替换所有回车符/换行符.我对此非常陌生,我尝试了以下方法:

strCustData.Replace("\r\n","")

但是这不起作用,因为strCustData是stringstream类型,而不是string.请帮助我实现这一目标.

解决方法:

您可能希望使用流缓冲区来过滤掉字符:

class filter : public std::streambuf
{
public:
    filter(std::ostream& os) : m_sbuf(os.rdbuf()) { }

    int_type overflow(int_type c) override
    {
        return m_sbuf->sputc(c == '\r' ? traits_type::eof() : c);
    }

    int sync() override { return m_sbuf->pubsync() ? 0 : -1; }
private:
    std::streambuf* m_sbuf;
};

现在您可以像这样使用它:

filter f(strCustData);
std::ostream os(&f);

os <<"\r\n"; // '\n'
上一篇:c – 如果我不清除stringstream会发生什么?


下一篇:C字符串流跳过一个字符