首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用折叠表达式创建csv列表?

如何使用折叠表达式创建csv列表?
EN

Stack Overflow用户
提问于 2021-02-28 21:20:37
回答 1查看 52关注 0票数 2

我想用一个可变函数来创建一个CSV列表。

作为一个懒惰的程序员,如果它是一行程序就好了,而且折叠表达式看起来可能符合要求。

以下代码不起作用:

代码语言:javascript
复制
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;
}

这提供了:

代码语言:javascript
复制
error: binary expression in operand of fold-expression  
 (ss << args << "," << ...);  
  ~~~~~~~~~~~^~~~~~

除了输入列表本身之外,我如何向折叠表达式添加额外的参数?

EN

回答 1

Stack Overflow用户

发布于 2021-02-28 21:20:37

(ss << args << "," << ...);更改为((ss << args << ","), ...);

第一个版本无法解包,因为中间的表达式太复杂,而第二个版本可以解包,因为它使用了逗号运算符。更好的是,这个版本没有在末尾放一个","

代码语言:javascript
复制
template<typename ...T>
std::string MakeCSV(const T&... args) {
    std::stringstream ss;
    ((ss << args << ","), ...);
    return ss.str();
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66409520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档