C++ Konvertieren Vector<BYTE> to string in dem ersten Vektor-byte ist 0

Ich bin versucht zu konvertieren von einem std::Vektor von BYTES (oder unsigned char) in einen std::string.
Das problem was ich habe ist, wenn das erste element des Vektors eine 0 ist, dann ist dies eine leere Zeichenfolge zurück, nachdem die Konvertierung.

Habe ich versucht die 2 folgenden Methoden. Beide string1 und string2 wird ein leerer string zurückgegeben.
Die Ergebnisse, die ich erwarte ist eine Zeichenfolge, die beginnt mit 2 x 0s gefolgt von mehreren anderen Zeichen.

//vector of BYTE, contains these 7 elements for example: (0,30,85,160,155,93,0)
std::vector<BYTE> data;

//method 1
BYTE* pByteArray = &data[0];
std::string string1 = reinterpret_cast<LPCSTR>(pByteArray);

//method 2
std::string string2(data.begin(),data.end());

//both string1 and string2 return ""

Ich vermute, weil das erste BYTE in dem Vektor 0, so dass die string-Zuweisung ist, denken, es ist null oder leer.
Gibt es eine andere Wandlung, die ich tun kann, um wieder den rest der Zeichenfolge?

Jede Hilfe sehr dankbar.

  • Wie haben Sie feststellen, dass Sie leer waren? Das zweite ist richtig (beachten Sie aber std::string verwendet char, nicht unsigned char).
  • Methode 1 funktioniert nicht, da ruft es die const char* überlastung der std::string Konstruktor, die Haltestellen auf \0. Warum die 2. nicht funktioniert hat, ist mehr als rätselhaft.
  • Wahrscheinlich die 2. Methode hat zwar funktioniert, aber das drucken der string aus ist es leer.
InformationsquelleAutor Rafa | 2014-07-29
Schreibe einen Kommentar