initialisieren std::string aus char* ohne copy

Ich habe eine situation wo ich brauche große (viele GB) Mengen von Daten wie Z:

  1. bauen einen großen string durch anfügen viele kleinere (C char*) strings
  2. schneiden Sie die Zeichenfolge
  3. konvertieren den string in eine C++ - const std::string für die Verarbeitung (nur Lesen)
  4. wiederholen

Die Daten in jeder iteration unabhängig sind.

Meine Frage ist, ich möchte zu minimieren (wenn möglich beseitigen) heap reservierten Speicher Nutzung, wie es im moment ist meine größte performance-problem.

Gibt es eine Möglichkeit, zu konvertieren, ein C-string (char*) in einen stl C++ - string (std::string), ohne dass die std::string intern alloc/kopieren der Daten?

Alternativ könnte ich stringstreams oder etwas ähnliches zu re-verwenden Sie einen großen Puffer?

Edit: Danke für die Antworten, zur Klarstellung, ich denke, eine überarbeitete Frage wäre:

Wie kann ich (über mehrere appends) stl C++ - string-effizient. Und wenn Sie diese Aktion ausführen, in einer Schleife, wo jede Schleife ist völlig unabhängig, wie kann ich Sie wieder verwenden thisallocated Raum.

InformationsquelleAutor Akusete | 2008-12-12

Schreibe einen Kommentar