我需要替换VC++项目中来自stringstream的所有回车符/换行符。我对此很陌生,尝试了以下操作:
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'