it-swarm.com.de

Wie konvertiere ich ein Zeichen-Array in einen String?

Das Konvertieren eines C++ string in ein char-Array ist mit der Funktion c_str von string und anschließendem Ausführen von strcpy ziemlich einfach. Wie soll man jedoch das Gegenteil tun?

Ich habe ein Zeichen-Array wie: char arr[ ] = "This is a test";, das zurück in: string str = "This is a test konvertiert werden soll.

229
kingsmasher1

Die Klasse string verfügt über einen Konstruktor, der eine C-Zeichenfolge mit NULL-Abschluss akzeptiert:

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;
348
Mysticial

Eine andere Lösung könnte so aussehen,

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

dies vermeidet die Verwendung einer zusätzlichen Variablen.

54
stackPusher

Es gibt ein kleines Problem, das in den Antworten mit den meisten Stimmen übersehen wurde. Das Zeichenarray kann nämlich 0 enthalten. Wenn wir einen Konstruktor mit einem einzelnen Parameter wie oben beschrieben verwenden, gehen einige Daten verloren. Die mögliche Lösung ist:

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

Ausgabe ist:

123
123 123

26
Yola
#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;
}

OUT:

H : is a char array beginning with 17 chars long

Hello from Chile. :is a string with 17 chars long
10
Cristian