【问题标题】:How to output C++ range-v3 to ostringstream?如何将 C++ range-v3 输出到 ostringstream?
【发布时间】:2018-12-06 02:35:02
【问题描述】:

此 range-v3 示例无法使用 Visual C++ 15.9 版进行编译:

auto letters = ranges::view::iota('a','g');
std::ostringstream out;
out << letters;

这是设计使然吗?将范围输出到ostringstream的方法是什么?

【问题讨论】:

    标签: c++ c++17 range-v3


    【解决方案1】:

    这个程序:

    #include <iostream>
    #include <sstream>
    #include <range/v3/view/iota.hpp>
    
    int main() {
        auto letters = ranges::view::iota('a','g');
        std::ostringstream out;
        out << letters;
        std::cout << out.str();
    }
    

    适用于我的 VS 2017 15.9.3 和由 vcpkg 安装的 range-v3。它输出[a,b,c,d,e,f]

    【讨论】:

    • 我刚刚升级到 15.9.3,并且我还安装了带有 vcpkg 的 range-v3,但它仍然无法编译:error C2440: 'return': cannot convert from 'std::basic_ostream&lt;char,std::char_traits&lt;char&gt;&gt;' to 'Stream &amp;'
    • 我在另一台 PC 上再次尝试,这次它可以工作了。也许最近的一个拉取请求改变了一些东西。感谢您查看。
    猜你喜欢
    • 2020-07-26
    • 2020-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-06
    • 1970-01-01
    • 2023-03-14
    相关资源
    最近更新 更多