2012-06-05 36 views
14

Jaki jest najlepszy sposób przekonwertowania z std::array<char, N> na std::string?std :: array <char, N> na std :: string

Próbowałem wyprodukować metodę szablonu, ale nie miałem szczęścia. Myślę, że moje umiejętności w C++ po prostu nie są do zera. Czy istnieje idiomatyczny sposób robienia tego w C++?

+0

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

Odpowiedz

32

nie powiem, że jest to „najlepszy sposób”, ale sposób jest użycie std::string „s iterator constructor:

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

Wow. Przepraszam, że zadałem tak trywialne pytanie. –

+6

'std :: array' również ma' begin' i 'end' jako funkcje składowe. –

+0

Tak, miałem zamiar odpowiedzieć na 'std :: string (arr.begin(), arr.end())'. Za późno. –

8

Jeśli istnieje ciąg znaków zakończony NULL w tablicy tak:

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