相关疑难解决方法(0)

使用逗号C++打印列表

我知道如何用其他语言来做这件事,而不是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++ pretty-print

50
推荐指数
9
解决办法
2万
查看次数

如何很好地输出分隔字符串列表?

通常,当我必须显示一个单独的字符串列表时,我做了类似的事情:

using namespace std;
vector<string> mylist; // Lets consider it has 3 elements : apple, banana and orange.

for (vector<string>::iterator item = mylist.begin(); item != mylist.end(); ++item)
{
  if (item == mylist.begin())
  {
    cout << *item;
  } else
  {
    cout << ", " << *item;
  }
}
Run Code Online (Sandbox Code Playgroud)

哪个输出:

apple, banana, orange
Run Code Online (Sandbox Code Playgroud)

我最近发现std::ostream_iterator如果发现它真的很好用.

但是使用以下代码:

copy(mylist.begin(), mylist.end(), ostream_iterator<string>(cout, ", "));
Run Code Online (Sandbox Code Playgroud)

如果得到:

apple, banana, orange, 
Run Code Online (Sandbox Code Playgroud)

几乎完美,除了额外的,.是否有一种优雅的方式来处理特殊的"第一个(或最后一个)元素"并且具有与第一个代码相同的输出,而没有它的"复杂性"?

c++ list stream

3
推荐指数
1
解决办法
1112
查看次数

标签 统计

c++ ×2

list ×1

pretty-print ×1

stream ×1