【发布时间】:2014-06-16 02:03:53
【问题描述】:
是否有一个字符串缓冲区类提供一个迭代器,该迭代器在必要时在递增时分配一个新缓冲区 (*++itr = 'x'),还是我首先坚持使用预分配缓冲区?
【问题讨论】:
是否有一个字符串缓冲区类提供一个迭代器,该迭代器在必要时在递增时分配一个新缓冲区 (*++itr = 'x'),还是我首先坚持使用预分配缓冲区?
【问题讨论】:
有一个叫做std::back_inserter()的东西,每次你分配给它时都会调用push_back()。一些示例代码:
int main() {
string s = "abc";
auto it = std::back_inserter(s);
it = 'd';
cout << s << endl;
return 0;
}
将打印出:abcd
【讨论】:
auto 的类型是 std::back_insert_iterator<std::string>。此外,#include <iterator> 可能是必需的。
*it++ = 'd'; 可以说与其他迭代器语义更一致,但无论哪种方式都可以......
*it 只是解析为 it;而++ 是无操作
您可以将std::ostringstream 与std::ostream_inserter 一起使用,如下所示(未经测试):
std:::ostringstream stream;
auto itr = ostream_inserter<char>(stream);
【讨论】: