将std::array<char, N>转换为std::string。

30

如何最好地将 std::array<char, N> 转换为 std::string

我尝试过编写模板方法,但一直没有成功。我认为我的 C++ 技能还不够好。在 C++ 中有没有惯用的方式来实现这个转换?

2个回答

50

我不会说这是“最好的方法”,但一种方法是使用std::string迭代器构造函数

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

哇,很抱歉问了这么一个琐碎的问题。 - Jonathan Evans
13
std::array 也有 beginend 作为成员函数。 - eq-
2
是的,我本来要回答 std::string(arr.begin(), arr.end()) 的。太晚了。 - Jeffery Thomas
13
std::beginstd::end 旨在超级通用,因为它们可以用于内置数组以及任何具有 begin()end() 成员函数的对象。 - Benjamin Lindley

23
如果数组中存在以空字符结尾的字符串,则:
std::array<char, 4> arr = {'a','b','c',0};
std::string str(arr.data());

6
有一个函数string(const char* s, size_t n),似乎即使没有空字符终止符也能工作。 - Daniel Stevens

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接