我想使用 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?
最佳答案
一开始就不要在末尾写额外的 ", "
怎么样...
if(!v.empty())
{
std::copy(v.begin(), v.end()-1, std::ostream_iterator<std::string>(os, ", "));
os << v.back();
}
关于c++ - 从输出流中删除输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19817038/