我知道如何用其他语言来做这件事,而不是C++,我不得不在这里使用它.
我有一组字符串,我打印到列表中,并且每个字符串之间需要逗号,但不是逗号.例如,在java中,我会使用stringbuilder,并在构建字符串后删除逗号.我如何用C++做到这一点?
auto iter = keywords.begin();
for (iter; iter != keywords.end( ); iter++ )
{
out << *iter << ", ";
}
out << endl;
Run Code Online (Sandbox Code Playgroud)
我最初尝试插入此块来执行此操作(在此处移动逗号打印)
if (iter++ != keywords.end())
out << ", ";
iter--;
Run Code Online (Sandbox Code Playgroud)
我讨厌小东西把我绊倒的时候.
编辑:谢谢大家.这就是我在这里发布这样的东西的原因.这么多好的答案,并以不同的方式解决.经过一个学期的Java和汇编(不同的类),不得不在4天内完成一个C++项目,这让我陷入了困境.我不仅得到了答案,还有机会思考解决这类问题的不同方法.真棒.
可能重复:
请勿在最后一个数字后打印空格
使用逗号C++打印列表
#include <vector>
#include <iostream>
#include <sstream>
#include <boost/foreach.hpp>
using namespace std;
int main()
{
vector<int> VecInts;
VecInts.push_back(1);
VecInts.push_back(2);
VecInts.push_back(3);
VecInts.push_back(4);
VecInts.push_back(5);
stringstream ss;
BOOST_FOREACH(int i, VecInts)
{
ss << i << ",";
}
cout << ss.str();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这打印出来:1,2,3,4,5,
但是我想要:1,2,3,4,5
我怎样才能以优雅的方式实现这一目标?
我看到我对"优雅"的含义有些困惑:例如,我的循环中没有减慢"if-clause"的速度.想象一下向量中的100.000个条目!如果这就是你要提供的全部内容,我宁愿在完成循环后删除最后一个逗号.
假设我们有一个包含n个元素的数组(n> 0).
我们想输出这些元素的列表,它们之间有一个分隔符.
解决此问题的常见方法是:
foreach item
(
output item
output separator
)
trim last separator
Run Code Online (Sandbox Code Playgroud)
但是要做到这一点似乎有点混乱.
另一种方法是:
check that there is at least one element
loop
(
output element
next element, or break if no more elements
output separator
)
Run Code Online (Sandbox Code Playgroud)
但我不确定它是否会一直有效.
您是否看到其他聪明的方法,例如在C,C++中?