【发布时间】:2013-11-06 16:10:57
【问题描述】:
我想使用std::copy 和std::ostream_iterator 将vector 中的字符串打印为括号之间的逗号分隔列表。所以我必须处理在最后一个元素之后删除", "的问题。
我试过this:
#include <iostream>
#include <vector>
#include <string>
#include <sstream>
#include <iterator>
int main() {
std::vector<std::string> v;
v.push_back("a");
v.push_back("b");
v.push_back("c");
std::stringstream os;
os << '(';
std::copy(v.begin(), v.end(), std::ostream_iterator<std::string>(os, ", "));
os.seekp(-2, std::ios_base::cur);
os << ')';
std::cout << os.str() << ".";
return 0;
}
输出:
(a, b, c) .
^
但是我得到的输出在右括号之后有一个额外的空白字符,因为seekp 只是移动了书写位置,但没有删除书写的字符。
有没有办法删除最后一个字符或写入 EOF?
【问题讨论】:
-
您是否愿意接受替代解决方案,或者您是否会接受唯一的选择?
-
@Benjamin Lindley:我很开放
标签: c++ vector iostream ostream