2010-07-11 27 views
38

Domanda semplice (in C++):Convertire un singolo carattere in una stringa?

Come si converte un carattere in una stringa. Quindi ad esempio ho una stringa str = "abc";

E voglio estrarre la prima lettera, ma voglio che sia una stringa in contrapposizione a un carattere.

ho cercato

string firstLetter = str[0] + ""; 

e

string firstLetter = & str[0]; 

Né opere. Idee?

+1

Sarebbe bene conoscere il linguaggio di programmazione che si sta utilizzando. – Rab

risposta

54

Fuori della parte superiore della mia testa, se si sta utilizzando STL poi fare questo:

string firstLetter(1,str[0]); 
+0

Ho usato questo e funziona, grazie! – MLP

+0

Si noti che 'std :: string' non proviene da quella parte della libreria standard derivata dall'STL. – sbi

+1

Aggiunta di questo commento per chiarire cosa indica la sintassi. Questo in pratica dice, _ ** "Voglio una' stringa' chiamata 'firstLetter' che acquisisce il carattere' 1' a partire dal primo elemento '' str' ('[0]'). "** _ http: // it .cppreference.com/w/cpp/string/basic_string/basic_string –

18

È possibile utilizzare il std::string(size_t , char) costruttore:

string firstletter(1, str[0]); 

Oppure si potrebbe usare string::substr():

string firstletter2(str.substr(0, 1)); 
+2

+1: i modi più semplici e migliori – rubenvb

2

string firstletter (str.begin(), str.begin() + 1);

5

1) Uso std::stringstream

std::string str="abc",r; 
    std::stringstream s; 
    s<<str[0]; 
    s>>r; 
    std::cout<<r; 

2) Uso string (size_t n, char c);constructor

std::string str="abc"; 
    string r(1, str[0]); 

3) Uso substr()

string r(str.substr(0, 1)); 
+0

Inoltre, questo funzionerà anche: 'string r (& str [0], 1);' o 'string r (str.c_str(), 1);' –

3

Uso string::substr.

Nell'esempio seguente, f sarà la stringa contenente 1 carattere dopo l'offset 0 in foo (in altre parole, il primo carattere).

string foo = "foo"; 
string f = foo.substr(0, 1); 

cout << foo << endl; // "foo" 
cout << f << endl; // "f" 
3
char characterVariable = 'z'; 
string cToS(1, characterVariable); 

//cToS is now a string with the value of "z" 
2
string s; 
char a='c'; 
s+=a; //now s is "c" 

o

char a='c'; 
string s(a); //now s is "c" 
+0

cosa è sbagliato con questo codice? –

+0

Penso che la mia soluzione sia corretta, non so perché ho ottenuto un -1. –

+0

Ha funzionato per me, quindi mi sto chiedendo lo stesso. –

Problemi correlati