std :: array <char,N>到std :: string

Jon*_*ans 23 c++ arrays string std c++11

从a转换为a的最佳方法std::array<char, N>std::string什么?

我尝试过生成模板方法,但没有运气.我认为我的C++技能不是最新的.在C++中有这样的惯用方法吗?

Rob*_*obᵩ 41

我不会说它是"最好的方法",但是一种方法是使用std::string's iterator构造函数:

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

  • @JonathanEvans:`std :: begin`和`std :: end`意味着超级泛型,因为它们可以处理内置数组,以及`begin()`和`end()`成员的任何东西功能. (11认同)
  • `std :: array`也有`begin`和`end`作为成员函数. (7认同)
  • 是的,我要回答 `std::string(arr.begin(), arr.end())`。为时已晚。 (2认同)

Dav*_* L. 16

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

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

  • 有一个 `string(const char* s, size_t n);` 即使没有空终止符似乎也能工作。 (4认同)