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?
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?
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.
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!
È 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.
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.
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
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
Non capisco a quale array ti riferisci, "logico" o "fisico". – 0decimal0
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
@DavidHeffernan Il gatto può mangiare biscotto, biscotto non può mangiare un gatto . – Maroun
@SuvP In casi estremi, il biscotto può venire al gatto. – Maroun
@SuvP Sai cosa c'è di comune tra loro? – Maroun