C++ std::数组<;char,N>;到std::string

C++ std::数组<;char,N>;到std::string,c++,arrays,string,c++11,std,C++,Arrays,String,C++11,Std,将std::array转换为std::string的最佳方式是什么 我曾尝试生成一个模板方法,但没有成功。我认为我的C++技能还不够高。在C++中有没有一种惯用的方法? < p>我不会说它是“最佳方式”,但一种方法是使用 STD::String : std::数组arr; ... // 填写arr std::string str(std::begin(arr),std::end(arr)); 如果数组中有以null结尾的字符串,则: std::array<char, 4> arr =

std::array
转换为
std::string
的最佳方式是什么

我曾尝试生成一个模板方法,但没有成功。我认为我的C++技能还不够高。在C++中有没有一种惯用的方法?

< p>我不会说它是“最佳方式”,但一种方法是使用<代码> STD::String :

std::数组arr;
... // 填写arr
std::string str(std::begin(arr),std::end(arr));

如果数组中有以null结尾的字符串,则:

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

Wow。很抱歉问这么一个小问题。
std::array
也有
begin
end
作为成员函数。是的,我本来打算回答
std::string(arr.begin(),arr.end())
。太晚了。@JonathanEvans:
std::begin
std::end
应该是超泛型的,因为它们在内置数组上工作,以及使用
begin()
end()
成员函数的任何对象上工作。有一个
字符串(const char*s,size\t n)
即使没有空终止符也能正常工作。
std::array<char, 4> arr = {'a','b','c',0};
std::string str(arr.data());