我目前正在实施一款新软件。在解析文件时,我收集了一个被跳过的行号列表。解析后我想将所有行号输出为逗号分隔的字符串。
如何将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
作为结果。显示的流仅用于说明目的,不能用于输出。
我使用循环以传统方式实现它。但我确信有一个使用后插件或类似的简单算法解决方案。
答案 0 :(得分:1)
令人惊讶的是,没有好的算法解决方案。一般的解决方案是使用std :: stringstream和ostream_iterator,方法如下:
std::ostringstream str;
std::copy(l.begin(), l.end(), std::ostream_iterator(str, ", ");
问题是字符串中的最后一个元素将以分隔符结束,&#39;,&#39;在这种情况下。所以如果你想要正确的字符串,你必须在循环中完成它。
你也可以按照std :: accumulate和lambda的方式制作一些东西,但老实说,循环将更具可读性。