ostringstream operator []在尝试读取缓冲区时给出编译错误

时间:2012-05-22 18:24:13

标签: c++ compilation buffer ostringstream

我有一个扩展ostringstream类的类。

Class A: public ostringstream
{

}

我想读取指定大小的数据和该对象的特定偏移量。所以尝试:

A a_;
a_ << data1 << data2;
string datax(a_[offset], size);

但是在字符串datax语句中遇到编译错误。

error: no match for operator[] in ... 

如何从对象a_复制指定偏移量和大小的数据?我不想从对象a_中删除数据。

注意:该课程由其他人设计,无法修改。

3 个答案:

答案 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”。