如何将整数列表转换为逗号分隔的字符串?

时间:2015-08-20 16:01:11

标签: c++ algorithm c++11 std

我目前正在实施一款新软件。在解析文件时,我收集了一个被跳过的行号列表。解析后我想将所有行号输出为逗号分隔的字符串。

如何将std::list<int>转换为逗号分隔列表中的std::string

假设此代码段为框架:

#include <list>
#include <string>

void parseFile()
{
    std::list<int> skippedLines;
    // ...parse file...
    if (!skippedLines.empty()) {
        const std::string skippedLinesAsString = ???
        log << "Skipped lines: " << skippedLinesAsString;
    }
}

请注意,我需要std::string作为结果。显示的流仅用于说明目的,不能用于输出。

我使用循环以传统方式实现它。但我确信有一个使用后插件或类似的简单算法解决方案。

1 个答案:

答案 0 :(得分:1)

令人惊讶的是,没有好的算法解决方案。一般的解决方案是使用std :: stringstream和ostream_iterator,方法如下:

std::ostringstream str;
std::copy(l.begin(), l.end(), std::ostream_iterator(str, ", ");

问题是字符串中的最后一个元素将以分隔符结束,&#39;,&#39;在这种情况下。所以如果你想要正确的字符串,你必须在循环中完成它。

你也可以按照std :: accumulate和lambda的方式制作一些东西,但老实说,循环将更具可读性。