ich mit der logischen Laufwerke auflisten möchten:
C++ Split-String mit 0 in Liste
const size_t BUFSIZE = 100;
char buffer[ BUFSIZE ];
memset(buffer,0,BUFSIZE);
//get available drives
DWORD drives = GetLogicalDriveStringsA(BUFSIZE,static_cast<LPSTR>(buffer));
Der Puffer enthält dann: 'C',':','\','0'
Jetzt habe ich mit "C:\"
eine Liste gefüllt haben wollen , "D:\"
und so weiter. Daher habe ich so etwas probiert:
std::string tmp(buffer,BUFSIZE);//to split this string then
QStringList drivesList = QString::fromStdString(tmp).split("\0");
Aber es hat nicht funktioniert. Ist es überhaupt möglich, mit dem Delimiter \0
zu teilen? Oder gibt es eine Möglichkeit, nach Länge zu teilen?
Da '\ 0 'beendet die Zeichenfolge, ich denke, Sie es nicht als Trennzeichen verwenden können – wasthishelpful
Die "Liste" zurück von [' GetLogicalDriveStrings'] (https://msdn.microsoft.com/en-us/library/windows/desktop/aa364975(v=vs.85).aspx) ist Double-Nullchar-terminated (in Ihrem Speicheransichts-Snapshot ausgelassen). Sie können also die Zeichenkette über die Längen, die für jedes Segment erhalten werden, unter Verwendung von Schleifen- und Zeigerarithmetik aufzählen, bis Sie auf ein Segment mit der Länge null stoßen. Wenn das passiert, bist du fertig. – WhozCraig
Ja, das war meine erste Annäherung mit 'while (i
Drayke