Ich verstehe, dass die Verwendung von Vektor eine gute Möglichkeit ist, binäre Daten zu speichern, wenn C ++ und die STL verwendet werden. Für meine Komponententests möchte ich den Vektor jedoch mit einer const char * C-String-Variable initialisieren.
Ich versuche eine Variante des hier gefundenen Codes zu verwenden - Konvertieren (void *) zu std :: vector & lt; unsigned char & gt; - um dies zu tun:
%Vor%Allerdings ist der VC ++ - Compiler mit der Zeile, die den Vektor initialisiert, nicht zufrieden:
%Vor%Ich schätze die extreme Nichtigkeit dieser Frage und bin bereit für viel Kritik am obigen Code:)
Vielen Dank im Voraus, Chris
std::transform
ist nur für diese Art von Problem nützlich. Sie können damit ein Stück Daten gleichzeitig "umwandeln". Siehe Dokumentation hier:
Der folgende Code funktioniert in VS2010. (Ich habe ein std::string
von Ihrem const char*
-Array erstellt, aber Sie könnten das wahrscheinlich vermeiden, wenn Sie das wirklich wollten.)
Was Sie vorhatten, scheint etwas zu sein wie:
%Vor% Die Zwischenvariable buffer
ist nicht erforderlich. Die Konvertierung von char
nach unsigned char
erfolgt implizit.
Beachten Sie, dass das abschließende Zeichen '
nicht von testdata
'cout << vec.data()
übernommen wird. Wenn du also etwas wie buffertype vec(testdata, next(testdata, strlen(testdata) + 1))
machen könntest, könntest du das nicht können. Wenn Sie möchten, dass Sie tun könnten: '
oder Sie möchten vielleicht nur Folgendes tun: string
'
Dies wird eine versteckte cout << vec
beibehalten. Da dies kein cout << vec.data()
ist, können Sie das nicht, %code% , aber %code% funktioniert. Ich habe ein Live-Beispiel für jedes dieser Elemente erstellt.
Tags und Links c++ visual-c++ vector char initalization