2013-06-18 17 views
6

Ich möchte die Unterschiede zwischen char * und string kennen. zum Beispiel in diesem Code:Unterschiede zwischen char * und String

char *a; 
string b; 

Kann mir jemand bitte helfen?

+1

@DavidHeffernan die Katze Keks essen, Keks eine Katze nicht essen kann . – Maroun

+0

@SuvP Im Extremfall kann der Keks zur Katze kommen. – Maroun

+0

@SuvP Weißt du, was zwischen ihnen gemeinsam ist? – Maroun

Antwort

13

Angenommen, Sie beziehen sich auf std::string, string ist eine Standardbibliothek Klasse Modellierung einer Zeichenfolge.

char * ist nur ein Zeiger auf ein einzelnes Zeichen. In C und C++ gibt es verschiedene Funktionen, die einen Zeiger auf ein einzelnes Zeichen als Parameter nehmen und den Speicher verfolgen, bis ein 0-Speicherwert erreicht ist (oft Null-Terminator genannt). Auf diese Weise modelliert er eine Zeichenfolge; strlen ist ein Beispiel für eine Funktion (aus der C-Standardbibliothek), die dies tut.

Wenn Sie die Wahl haben, verwenden Sie std::string, da Sie sich nicht um den Speicher kümmern müssen.

3

char* ist ein Zeiger auf eine primitive Art: char

string ist ein First-Class-Objekt aus dem Standard Template Library, die eine Vielzahl von Funktionen Wraps (wie verketten zwei Saiten) und macht es einfacher, mit zu arbeiten.

2 sehr unterschiedliche Entitäten!

0

Seine einfache, char *a; deklariert einen Zeiger 'a' des Typs char, es wird auf eine konstante Zeichenfolge oder Zeichenfelder zeigen. String b; erklärt b als ein Objekt von string type.String hier ist eine Klasse, die mehrere String-Manipulation Elementfunktionen (Methoden) enthält .Sie hier für weitere Details aussehen: http://www.cplusplus.com/reference/string/string/

Ein Beispielprogramm beschreibt, das string Objekt und seine Member-Funktion da unten ist:

#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 wird als String-Objekt und die Elementfunktion deklariert size() aufgerufen, um die Größe von str zu erhalten.

0

char* kann auch ein Zeiger auf die 0 (erste) Stelle eines Arrays von Zeichen sein. Es wurde häufig in C verwendet, wo die Verwendung von String nicht unterstützt wird.

+0

Wenn Sie Char einen Zeiger auf ein Array von Zeichen deklarieren, dann wäre Ihre Antwort richtig, aber hier ist etwas anderes, es ist ein einzelnes Zeichen – 0decimal0

+0

selbst wenn es ein einzelnes Zeichen ist, ist es ein Array mit einer Zelle. * a bezieht sich auf seinen Wert, während & a sich auf seine Adresse im Speicher bezieht. – brbtsl

+0

Ich verstehe nicht, auf welches Array Sie sich beziehen, "logisch" oder "physikalisch". – 0decimal0

0

Wenn Sie sich Sorgen um die Funktionalität machen, ist string ein funktionsfähigchar* i.e Sie sich keine Sorgen machen müssen über space

char *

Erklärung/Initialisierung: char* str = "Use";

Anfügen: XXX

Befund Länge: strlen(str); // brauchen <string.h> oder erstellen Sie Ihre eigenen schließen

Zeichenfolge

Erklärung/Initialisierung: string str = "Use";

Anfügen: str += " This!"

Befund Länge: str.length() // alle in einer Header-Datei

Verwandte Themen