Hoe converteer je een char array naar een string?

Het converteren van een C++ stringnaar een char-array is vrij eenvoudig door de functie c_strvan string te gebruiken en vervolgens strcpyuit te voeren. Maar hoe doe je het tegenovergestelde?

Ik heb een char-array zoals: char arr[ ] = "This is a test";om terug te converteren naar:
string str = "This is a test.


Antwoord 1, autoriteit 100%

De klasse stringheeft een constructor die een NULL-terminated C-string nodig heeft:

char arr[ ] = "This is a test";
string str(arr);
//  You can also assign directly to a string.
str = "This is another string";
// or
str = arr;

Antwoord 2, autoriteit 14%

Een andere oplossing kan er als volgt uitzien,

char arr[] = "mom";
std::cout << "hi " << std::string(arr);

die het gebruik van een extra variabele vermijdt.


Antwoord 3, autoriteit 10%

Er is een klein probleempje over het hoofd gezien in de best gestemde antwoorden. Namelijk, karakterarray kan 0 bevatten. Als we een constructor met een enkele parameter gebruiken, zoals hierboven aangegeven, zullen we wat gegevens verliezen. De mogelijke oplossing is:

cout << string("123\0 123") << endl;
cout << string("123\0 123", 8) << endl;

Uitvoer is:

123
123 123


Antwoord 4, autoriteit 3%

#include <stdio.h>
#include <iostream>
#include <stdlib.h>
#include <string>
using namespace std;
int main ()
{
  char *tmp = (char *)malloc(128);
  int n=sprintf(tmp, "Hello from Chile.");
  string tmp_str = tmp;
  cout << *tmp << " : is a char array beginning with " <<n <<" chars long\n" << endl;
  cout << tmp_str << " : is a string with " <<n <<" chars long\n" << endl;
 free(tmp); 
 return 0;
}

UIT:

H : is a char array beginning with 17 chars long
Hello from Chile. :is a string with 17 chars long

Other episodes