2012-06-05 20 views
14

¿Cuál es la mejor manera de convertir de std::array<char, N> a std::string?std :: array <char, N> std :: string

He intentado producir un método de plantilla pero no he tenido suerte. Creo que mis habilidades en C++ simplemente no están a la altura. ¿Hay una forma idiomática de hacer esto en C++?

+0

[ 'std :: copy'] (http://msdn.microsoft.com/en-us/library/x9f6s1wf (v = vs.80) .aspx) –

Respuesta

32

No voy a decir que es el "mejor manera", pero una manera es utilizar std::string 's iterator constructor:

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

Wow. Disculpas por hacer una pregunta tan trivial. –

+6

'std :: array' también tiene' begin' y 'end' como funciones de miembro. –

+0

Sí, iba a responder 'std :: string (arr.begin(), arr.end())'. Demasiado tarde. –

8

Si hay una cadena terminada en nulo en la matriz de modo:

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