使用 fmt 库打印逗号分隔的元组

问题描述 投票:0回答:1

假设元组应该以逗号分隔的形式输出:

#include <iostream>
#include <tuple>

template <typename TupleT, std::size_t... Is>
void printTupleImp(const TupleT& tp, std::index_sequence<Is...>) {
    size_t index = 0;

    std::cout << "(";
    ( ((index++ > 0 ? (std::cout << ", ", true) : true), 
       void(std::cout << std::get<Is>(tp))), ... );
    std::cout << ")";
}

template <typename TupleT, std::size_t TupSize = std::tuple_size_v<TupleT>>
void printTuple(const TupleT& tp) {
    printTupleImp(tp, std::make_index_sequence<TupSize>{});
}

int main() {
    std::tuple tp { 10, 20, "hello"};
    printTuple(tp);
}

输出:

(10, 20, hello)

看起来折叠表达式的优化非常有效编译器资源管理器

有没有一种方法可以仅使用 fmt 来完成相同的操作,而不是先输出到

ostream

,就像
这里

如果涉及

fmt::formatter

专业化,如何生成格式字符串?

c++ tuples fmt
1个回答
0
投票
最新版本的 fmt(特别是 fmt 6.0.0 及更高版本)支持范围和元组的格式化。 请参阅文档中的

范围和元组格式

#include <fmt/ranges.h> int main() { std::tuple tp { 10, 20, "hello"}; // Prints "(10, 20, "hello")" fmt::print("{}", tp); }
    
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.