【问题标题】:How can I convert a list of integer into comma separated string? [duplicate]如何将整数列表转换为逗号分隔的字符串? [复制]
【发布时间】:2015-11-14 09:04:16
【问题描述】:

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

如何将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 作为结果。显示的流仅用于说明目的,不能用于输出。

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

【问题讨论】:

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


【解决方案1】:

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

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

问题是在这种情况下,字符串中的最后一个元素将以定界符“,”结尾。因此,如果您想要正确的字符串,则必须在循环中执行此操作。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-22
    • 2014-01-08
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 2014-03-21
    • 2014-08-24
    相关资源
    最近更新 更多