1

我有一个扩展 ostringstream 类的类。

Class A: public ostringstream
{

}

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

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

但是在字符串 datax 语句中出现编译错误。

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

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

注意:该类是由其他人设计的,不能修改。

4

3 回答 3

1

首先,标准中的任何内容都不能保证派生自std::ostringstream会起作用。你最好不要这样做。

其次,没有operator []forstd::ostringstream那么为什么要有一个 forA呢?

最后,您可以调用str()a_获取std::string缓冲区的内容。我不确定这是否会对您有所帮助,您想要做什么并不完全清楚。

于 2012-05-22T18:26:58.837 回答
1

我相信使用您拥有的代码可以做到:

a_ << data1 << data2;
string datax(&a_.str()[offset], size);

这对我来说有点难看。为什么不直接使用plainstd::stringstream呢?(除非你有充分的理由继承自std::ostringstream.

于 2012-05-22T18:27:52.100 回答
0

您需要调用 str() 方法:

ostringstream oss (ostringstream::out);
oss << "abcdef";
string s = oss.str();
cout << s.substr(1, 3) << endl;

此示例将输出“bcd”。

于 2012-05-22T18:31:25.163 回答