[C++] Come convertire un array di caratteri in una stringa?


Answers

La classe string ha un costruttore che accetta una stringa C con terminazione NULL:

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;
Question

Convertire una string C ++ in un array di caratteri è piuttosto semplice usando la funzione c_str di string e quindi facendo strcpy . Tuttavia, come fare il contrario?

Ho un array di caratteri come: char arr[ ] = "This is a test"; da riconvertire in: string str = "This is a test .




C'è un piccolo problema mancato nelle risposte più votate. Vale a dire, l'array di caratteri può contenere 0. Se useremo il costruttore con un singolo parametro come indicato sopra, perderanno alcuni dati. La possibile soluzione è:

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

L'output è:

123
123 123




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

SU:

H : is a char array beginning with 17 chars long

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



Un'altra soluzione potrebbe assomigliare a questo,

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

che evita di usare una variabile extra.




In C ++ 11, puoi usare std::to_string("bla bla bla");