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?
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?
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.
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!
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.
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.
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
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
Ich verstehe nicht, auf welches Array Sie sich beziehen, "logisch" oder "physikalisch". – 0decimal0
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
@DavidHeffernan die Katze Keks essen, Keks eine Katze nicht essen kann . – Maroun
@SuvP Im Extremfall kann der Keks zur Katze kommen. – Maroun
@SuvP Weißt du, was zwischen ihnen gemeinsam ist? – Maroun