【发布时间】:2012-06-09 15:36:07
【问题描述】:
从std::array<char, N> 转换为std::string 的最佳方法是什么?
我尝试过生成模板方法,但没有成功。我认为我的 C++ 技能还没有达到标准。在 C++ 中有没有一种惯用的方式来做到这一点?
【问题讨论】:
标签: c++ arrays string c++11 std
从std::array<char, N> 转换为std::string 的最佳方法是什么?
我尝试过生成模板方法,但没有成功。我认为我的 C++ 技能还没有达到标准。在 C++ 中有没有一种惯用的方式来做到这一点?
【问题讨论】:
标签: c++ arrays string c++11 std
我不会说这是“最好的方式”,但一种方式是使用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())。太晚了。
std::begin 和 std::end 是超级通用的,因为它们适用于内置数组,以及带有 begin() 和 end() 成员函数的任何东西。
如果数组中有一个以空结尾的字符串,那么:
std::array<char, 4> arr = {'a','b','c',0};
std::string str(arr.data());
【讨论】:
string(const char* s, size_t n);,即使没有空终止符似乎也可以工作。