Heim > Backend-Entwicklung > C++ > Wie rufe ich einen Rohdatenzeiger von einem std::vector ab?

Wie rufe ich einen Rohdatenzeiger von einem std::vector ab?

Barbara Streisand
Freigeben: 2024-11-11 17:34:02
Original
264 Leute haben es durchsucht

How to Retrieve a Raw Data Pointer from a std::vector?

Rohdatenzeiger von std::vector abrufen

Problem:

Sie möchten Verwenden Sie einen std::vector als char-Array innerhalb einer Funktion, die einen void-Zeiger akzeptiert. Versuche, den Vektor direkt oder über seinen begin()-Iterator zu übergeben, haben zu falschen Daten oder Compiler-Warnungen geführt.

Lösung:

Um auf die Rohdaten eines std zuzugreifen ::vector, erhalten Sie die Adresse seines Anfangselements mit einer der folgenden Methoden:

  • &something[0] oder &something.front() – gibt die Adresse des Elements am Index 0 zurück.
  • &*something.begin() – gibt die Adresse des Elements zurück, auf das der begin()-Iterator zeigt.

Ab C 11 ist eine zusätzliche Option verfügbar:

  • &something.data() – gibt die Adresse des Anfangselements zurück und sorgt so für Sicherheit für leere Behälter.

Beispiele:

void process_data(const void *data);

std::vector<char> something;

// Cast the raw data pointer to char* for compatibility.
char *data_ptr = reinterpret_cast<char*>(something.data());
process_data(data_ptr);
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie rufe ich einen Rohdatenzeiger von einem std::vector ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage