【发布时间】: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 作为结果。显示的流仅用于说明目的,不能用于输出。
我使用循环以传统方式实现它。但我确信有一个使用反向插入器或类似工具的简单算法解决方案。
【问题讨论】:
-
@Yakk 其实我用的是
QList<int>,它与标准库兼容。 -
我会坚持循环写入字符串流,因为它易于阅读和维护。你也可以看看 boost 有很多不错的工具
-
en.cppreference.com/w/cpp/experimental/ostream_joiner 很有趣——在 C++1z 中,你可以获取一个 sstream,创建一个 joiner,通过 joiner 复制你的内容,然后从 sstream 中取出字符串。跨度>