如何最好地将 std::array<char, N>
转换为 std::string
?
我尝试过编写模板方法,但一直没有成功。我认为我的 C++ 技能还不够好。在 C++ 中有没有惯用的方式来实现这个转换?
我不会说这是“最好的方法”,但一种方法是使用std::string
的迭代器构造函数:
std::array<char, 10> arr;
... // fill in arr
std::string str(std::begin(arr), std::end(arr));
std::array<char, 4> arr = {'a','b','c',0};
std::string str(arr.data());
string(const char* s, size_t n)
,似乎即使没有空字符终止符也能工作。 - Daniel Stevens
std::array
也有begin
和end
作为成员函数。 - eq-std::string(arr.begin(), arr.end())
的。太晚了。 - Jeffery Thomasstd::begin
和std::end
旨在超级通用,因为它们可以用于内置数组以及任何具有begin()
和end()
成员函数的对象。 - Benjamin Lindley