我想用一个可变函数来创建一个CSV列表。
作为一个懒惰的程序员,如果它是一行程序就好了,而且折叠表达式看起来可能符合要求。
以下代码不起作用:
template<typename ...T>
std::string MakeCSV(T&... args) {
std::stringstream ss;
(ss << args << "," << ...);
return ss.str();
}
int main() {
std::string s1 = "one";
std::string s2 = "two";
std::cout << MakeCSV(s1, s2) << std::endl;
return 0;
}这提供了:
error: binary expression in operand of fold-expression
(ss << args << "," << ...);
~~~~~~~~~~~^~~~~~除了输入列表本身之外,我如何向折叠表达式添加额外的参数?
发布于 2021-02-28 21:20:37
将(ss << args << "," << ...);更改为((ss << args << ","), ...);
第一个版本无法解包,因为中间的表达式太复杂,而第二个版本可以解包,因为它使用了逗号运算符。更好的是,这个版本没有在末尾放一个","。
template<typename ...T>
std::string MakeCSV(const T&... args) {
std::stringstream ss;
((ss << args << ","), ...);
return ss.str();
}https://stackoverflow.com/questions/66409520
复制相似问题