【问题标题】:std::array<char, N> to std::stringstd :: Array <char,n> to std :: string
【发布时间】:2012-06-09 15:36:07
【问题描述】:

从std::array&lt;char, N&gt; 转换为std::string 的最佳方法是什么?

我尝试过生成模板方法,但没有成功。我认为我的 C++ 技能还没有达到标准。在 C++ 中有没有一种惯用的方式来做到这一点?

【问题讨论】:

    标签: c++ arrays string c++11 std


    【解决方案1】:

    我不会说这是“最好的方式”,但一种方式是使用std::string的iterator constructor:

    std::array<char, 10> arr;
    ... // fill in arr
    std::string str(std::begin(arr), std::end(arr));
    

    【讨论】:

    • 哇。很抱歉问了这么一个微不足道的问题。
    • std::array 也有 begin 和 end 作为成员函数。
    • 是的,我会回答std::string(arr.begin(), arr.end())。太晚了。
    • @JonathanEvans: std::begin 和 std::end 是超级通用的,因为它们适用于内置数组,以及带有 begin() 和 end() 成员函数的任何东西。
    【解决方案2】:

    如果数组中有一个以空结尾的字符串,那么:

    std::array<char, 4> arr = {'a','b','c',0};
    std::string str(arr.data());
    

    【讨论】:

    • 有一个string(const char* s, size_t n);,即使没有空终止符似乎也可以工作。
    猜你喜欢
    • 1970-01-01
    • 2018-12-27
    • 2017-05-31
    • 1970-01-01
    • 1970-01-01
    • 2011-11-13
    • 1970-01-01
    • 2018-03-11
    • 2017-03-10
    相关资源
    最近更新 更多