相关疑难解决方法(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万
查看次数

如何处理最后一个逗号,当用逗号分隔字符串时?

可能重复:
请勿在最后一个数字后打印空格
使用逗号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个条目!如果这就是你要提供的全部内容,我宁愿在完成循环后删除最后一个逗号.

c++ csv string boost stringstream

33
推荐指数
5
解决办法
2万
查看次数

什么是在中间输出(n-1)个分隔符的n个项目列表的聪明方法?

假设我们有一个包含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++中?

language-agnostic algorithm optimization implementation

7
推荐指数
6
解决办法
505
查看次数