我有一个扩展ostringstream类的类。
Class A: public ostringstream
{
}
我想读取指定大小的数据和该对象的特定偏移量。所以尝试:
A a_;
a_ << data1 << data2;
string datax(a_[offset], size);
但是在字符串datax语句中遇到编译错误。
error: no match for operator[] in ...
如何从对象a_复制指定偏移量和大小的数据?我不想从对象a_中删除数据。
注意:该课程由其他人设计,无法修改。
答案 0 :(得分:1)
首先,标准中没有任何内容可以保证从std::ostringstream
派生的内容将起作用。你最好不要这样做。
其次,operator []
没有std::ostringstream
所以为什么A
应该有一个呢?
最后,您可以在str()
上调用a_
并获取包含缓冲区内容的std::string
。我不确定这对你有帮助,你想做的事情并不完全清楚。
答案 1 :(得分:1)
我相信您可以使用的代码:
a_ << data1 << data2;
string datax(&a_.str()[offset], size);
对我来说看起来有点难看。为什么不使用普通std::stringstream
呢? (除非你有充分的理由继承std::ostringstream
。
答案 2 :(得分:0)
你需要调用str()方法:
ostringstream oss (ostringstream::out);
oss << "abcdef";
string s = oss.str();
cout << s.substr(1, 3) << endl;
此示例将输出“bcd”。