首页 > 后端开发 > C++ > 如何在 C 中有效地打印逗号分隔的列表?

如何在 C 中有效地打印逗号分隔的列表?

Patricia Arquette
发布: 2024-12-30 00:01:10
原创
139 人浏览过

How to Efficiently Print Comma-Separated Lists in C  ?

如何在 C 中打印逗号分隔的列表?

在 C 中,打印逗号分隔的元素列表可能比较棘手到其他语言,例如 Java。为了解决这个问题,我们探索了几种技术。

使用中缀迭代器

中缀迭代器允许您在迭代期间在每个元素之间插入分隔符。它是标准输出迭代器的自定义变体。

// infix_iterator.h
// Extended output iterator with delimiter insertion

template <typename T, typename charT, typename traits = std::char_traits<charT>>
class infix_ostream_iterator : public std::iterator<std::output_iterator_tag, void, void, void, void>
{
    std::basic_ostream<charT, traits>& os;
    charT const* delimiter;
    bool first_elem;

public:
    infix_ostream_iterator(std::basic_ostream<charT, traits>& s) : os(&s), delimiter(0), first_elem(true) {}
    infix_ostream_iterator(std::basic_ostream<charT, traits>& s, charT const *d) : os(&s), delimiter(d), first_elem(true) {}

    infix_ostream_iterator<T, charT, traits>& operator=(T const &item)
    {
        // Insert delimiter before element unless it's the first
        if (!first_elem && delimiter != 0)
            *os << delimiter;
        *os << item;
        first_elem = false;
        return *this;
    }
    // ...
};
登录后复制

与中缀迭代器一起使用:

#include "infix_iterator.h"

// ...

// Copy elements using infix iterator to insert commas
std::copy(keywords.begin(), keywords.end(), infix_iterator(out, ",")); 
登录后复制

以上是如何在 C 中有效地打印逗号分隔的列表?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板