2013-06-18 24 views
6

Desidero conoscere le differenze tra char * e string. per esempio in questo codice:differenze tra char * e stringa

char *a; 
string b; 

Qualcuno mi può aiutare per favore?

+1

@DavidHeffernan Il gatto può mangiare biscotto, biscotto non può mangiare un gatto . – Maroun

+0

@SuvP In casi estremi, il biscotto può venire al gatto. – Maroun

+0

@SuvP Sai cosa c'è di comune tra loro? – Maroun

risposta

13

Supponendo che ci si riferisca a std::string, string è una classe di libreria standard che modella una stringa.

char * è solo un puntatore a un singolo carattere. In C e C++ esistono varie funzioni che assumono un puntatore a un singolo carattere come parametro e tracciano lungo la memoria finché non viene raggiunto un valore di memoria 0 (spesso chiamato il terminatore nullo ). In questo modo modella una stringa di caratteri; strlen è un esempio di una funzione (dalla libreria standard C) che esegue questa operazione.

Se si dispone di una scelta, utilizzare std::string in quanto non è necessario preoccuparsi di memoria.

3

char* è un puntatore a un tipo primitivo: char

string è un oggetto di prima classe da Standard Template Library che avvolge un sacco di funzionalità (come concatenare due stringhe) e rende più facile da lavorare.

2 entità molto diverse!

0

È semplice, char *a; dichiara un puntatore "a" di tipo char, punterà a stringhe di caratteri o stringhe di caratteri costanti. String b; dichiara b come oggetto di string type.String qui è una classe che contiene diverse funzioni membro manipolazione di stringa (metodi) .You può cercare qui per ulteriori dettagli: http://www.cplusplus.com/reference/string/string/

Un esempio di programma descrive l'oggetto string e la sua funzione membro è il seguente:

#include <iostream> 
#include <string> 
using namespace std; 

int main() 
{ 
    string str ("steve jobson"); 
    cout <<"hello the name of steve jobs consists of"<< str.size() << " characters.\n"; 
    return 0; 
} 

str viene dichiarata come oggetto stringa e la funzione membro size() è chiamato per ottenere la dimensione di str.

0

char* può anche essere un puntatore allo 0 (primo) posto di una matrice di caratteri. È stato utilizzato frequentemente in C, in cui l'uso di String non è supportato.

+0

se dichiari il carattere di un puntatore a un array di caratteri, allora la tua risposta sarebbe giusta ma qui è qualcosa d'altro, è un singolo carattere – 0decimal0

+0

anche se è un singolo carattere, è un array con una cella. * a si riferisce al suo valore, mentre & a si riferisce al suo indirizzo nella memoria. – brbtsl

+0

Non capisco a quale array ti riferisci, "logico" o "fisico". – 0decimal0

0

se ci si preoccupa della funzionalità, string è un funzionalechar* i.E È non è necessario preoccuparsi di space

char *

dichiarazione/inizializzazione: char* str = "Use";

apposizione: XXX

lunghezza ritrovamento: strlen(str); // bisogno di includere <string.h> o creare il proprio

stringa

dichiarazione/inizializzazione: string str = "Use";

apposizione: str += " This!"

lunghezza ritrovamento: str.length() // tutto in un unico file di intestazione