从std :: vector打印逗号分隔列表

Nic*_*man 5 c++ printing vector pretty-print c++11

我正在尝试打印一个以逗号分隔的单个详细信息列表std::vector<MyClass>.到目前为止,我所看到的最简单,最聪明的方法是使用

std::ostringstream ss;
std::copy(vec.begin(), vec.end() - 1, std::ostream_iterator<std::string>(ss, ", "))
ss << vec.back();
Run Code Online (Sandbox Code Playgroud)

当我打印一个字符串向量时,这工作正常.但是,现在我正在尝试打印一个关于的细节MyClass.我知道在Python中我可以做类似的事情

(x.specific_detail for x in vec)
Run Code Online (Sandbox Code Playgroud)

得到我感兴趣的东西的生成器表达式.我想知道我是否可以在这里做类似的事情或者我是否被困在做

for (auto it = vec.begin(); it != vec.end(); ++it) {
    // Do stuff here
}
Run Code Online (Sandbox Code Playgroud)

Chr*_*rew 13

解决这个问题的一种方法我看到:

std::string separator;
for (auto x : vec) {
  ss << separator << x.specific_detail;
  separator = ",";
}
Run Code Online (Sandbox Code Playgroud)

  • 这会浪费时间重新初始化分隔符变量。 (2认同)