Heim >Backend-Entwicklung >C++ >Wie konvertiere ich einen „std::string' in einen „char*' oder „char[]' in C?

Wie konvertiere ich einen „std::string' in einen „char*' oder „char[]' in C?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-30 15:39:09132Durchsuche

How to Convert a `std::string` to a `char*` or `char[]` in C  ?

Konvertieren von std::string in char* oder char[]

In C muss möglicherweise ein std::konvertiert werden: string, der eine Folge von Zeichen enthält, in ein nullterminiertes Zeichenarray, das durch char* oder char[] dargestellt wird. Eine direkte Konvertierung mit dem Zuweisungsoperator führt jedoch zu einem Fehler.

Um diese Konvertierung zu erreichen, stehen mehrere Methoden zur Verfügung:

1. c_str()-Methode:

Die c_str()-Methode von std::string gibt einen Zeiger auf die zugrunde liegende Zeichenfolge im C-Stil zurück, die nullterminiert ist. Dieser Zeiger kann direkt einer char*-Variablen zugewiesen werden.

std::string str = "string";
const char *cstr = str.c_str();

2. data()-Methode:

Die data()-Methode von std::string gibt ebenfalls einen Zeiger auf die zugrunde liegende Zeichenfolge im C-Stil zurück, ist jedoch nicht konstant. Dieser Zeiger kann einer char*-Variablen ohne das const-Qualifikationsmerkmal zugewiesen werden.

std::string str = "string";
char *cstr = str.data();

Andere Optionen:

  • Kopieren in einen Standard: :vector:

Man kann einen std::vector aus Zeichen und erstellen Kopieren Sie die Zeichen aus dem std::string hinein. Die data()-Methode des Vektors kann dann verwendet werden, um einen char*-Zeiger zu erhalten.

  • Manuelle Speicherzuweisung:

Man kann manuell Ordnen Sie mit dem neuen Operator ein Array von Zeichen zu, kopieren Sie die Zeichen aus std::string in das Array und verwenden Sie das Array als char*-Zeiger. Dieser Ansatz sollte aufgrund von Problemen bei der manuellen Speicherverwaltung mit Vorsicht verwendet werden.

Zusammenfassend bieten die Methoden c_str() und data() von std::string praktische Möglichkeiten, einen std::string in ein char* umzuwandeln. oder char[]-Datentyp. Andere Optionen, wie das Kopieren in einen std::vector oder die manuelle Speicherzuweisung, können in bestimmten Situationen verwendet werden.

Das obige ist der detaillierte Inhalt vonWie konvertiere ich einen „std::string' in einen „char*' oder „char[]' in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn