Wie würde ich einen vector<char> nach Schlüsselwörtern durchsuchen?
-
dot schrieb:
EOP schrieb:
dot schrieb:
Wieso kannst du keinen std::string verwenden?
Weil es evtl. auch Binärdaten sind, die aus dem www heruntergeladen und nach Schlüsselwörten durchsucht werden müssen. Und zwar so schnell wie möglich das Ganze.
Ok, das macht Sinn

Für mich nicht. Warum ist
stringdenn schneller alsvector<char>und was hat das mit Binärdaten zu tun?stringkann sehr wohl'\0'enthalten. C++ ist nicht C.
vectorist aber genau richtig hier, weil die Extras vonstringnicht benötigt werden.
-
Nach einem kurzen Test hab ich festgestellt, daß std::string das '\0' anscheinend einfach entfernt (VS 2005).
Das kann's ja auch nicht sein. Ich will alles.Aber ausser von ME hab ich noch keine vernünftige Anrwort (C++<11) bekommen.
-
TyRoXx schrieb:
dot schrieb:
EOP schrieb:
dot schrieb:
Wieso kannst du keinen std::string verwenden?
Weil es evtl. auch Binärdaten sind, die aus dem www heruntergeladen und nach Schlüsselwörten durchsucht werden müssen. Und zwar so schnell wie möglich das Ganze.
Ok, das macht Sinn

Für mich nicht. Warum ist
stringdenn schneller alsvector<char>und was hat das mit Binärdaten zu tun?stringkann sehr wohl'\0'enthalten. C++ ist nicht C.
vectorist aber genau richtig hier, weil die Extras vonstringnicht benötigt werden.Wenn du mich fragst wäre string hier nicht angebracht, weil man es schon rein semantisch nicht mit strings zu tun hat...
-
Muss ich morgen/heute erst testen, ob sowas wie string.append( "a\0b" ) funktioniert, und wenn dann wie.
-
EOP schrieb:
Muss ich morgen/heute erst testen, ob sowas wie string.append( "a\0b" ) funktioniert, und wenn dann wie.
ja, es funktioniert.
string speichert dir alle zeichen, die du möchtest.
wie hast du denn herausgefunden, dass die '\0' offenbar verschluckt wird?
ausgegeben? falls ja: länge mit angeben
z.Bsp.:
std::cout.write(the_string, the_string.size());bb
-
Strings können zwar '\0' enthalten, aber bei
string.append( "a\0b" )wird das übergebene String-Literal als null-terminiert aufgefaßt (denn sonst könnte es ja das Ende des Literals nicht erkennen), d.h. es würde nur "a" hinzugefügt. Abhilfe würde hier nur
string.append( "a\0b", 3 )schaffen, um auch die beiden anderen Zeichen hinzuzufügen.
Trotzdem würde ich hier auch zu vector<char> raten. Und Michael E. hat dir doch für C++0x03 (d.h. u.a. für VS 2005) kompatiblem Code geliefert (beachte nicht die Anmerkung von PI, der kann nämlich nicht rechnen ;-).
-
314159265358979__ schrieb:
Michael E. schrieb:
auto found = search(begin(content), end(content), begin(query), end(query) - 1); // -1 wegen der NullterminierungOhne -1 stimmts schon.
Nein. Die -1 ist richtig. Warum er -1 geschrieben hat, steht doch sogar erklärt da!
-
Nicht gleich so aggressiv. Ich hatte nen Denkfehler, piss dich nicht gleich so an.
-
314159265358979 schrieb:
Nicht gleich so aggressiv.
Ich zitiere Dich bei Gelegenheit. :p
-
Ich bin ein Teenie, ich darf das.