Selbstgemachter Split will nicht so ....
-
@Bushmaster ich würde das mit
std::string
,std::string::find()
, undstd::string::substr()
lösen.Wenn es mal funktioniert und mal nicht, klingt das nicht gut.
-
@Schlangenmensch sagte in Selbstgemachter Split will nicht so ....:
std::string, std::string::find(), und std::string::substr() lösen.
das wäre sicher mehr c++like, aber wäre es auch kurz und effizient?
ich bin leider darauf angewiesen einen char** zu konstruieren, um damit die main-funktion eines anderen programms zu füttern.@Schlangenmensch sagte in Selbstgemachter Split will nicht so ....:
Wenn es mal funktioniert und mal nicht, klingt das nicht gut.
vor allem weil computer sonst deterministisch arbeiten.
ich denke mal, das war ein temporäres problem. ich muss mal wieder einen virenscanner über meine kiste laufen lassen.
-
@Bushmaster wie rufst du denn das andere Programm auf? Ich würde wahrscheinlich mit
system("program.exe -params")
arbeiten, also mit einem c-style string. Da muss dann nichts gesplittet werden.
-
@Schlangenmensch sagte in Selbstgemachter Split will nicht so ....:
@Bushmaster wie rufst du denn das andere Programm auf? Ich würde wahrscheinlich mit
system("program.exe -params")
arbeiten, also mit einem c-style string. Da muss dann nichts gesplittet werden.ich rufe direkt seine main-funktion auf.
extern "C" int samMain(int argc, char** argv);
-
@Bushmaster sagte in Selbstgemachter Split will nicht so ....:
ich muss mal wieder einen virenscanner über meine kiste laufen lassen.
Das ist so ziemlich der unwahrscheinlichste Grund für dein Problem.
-
@manni66
aber was es war werde ich nie erfahren. der effekt trat nicht mehr auf.
-
@Bushmaster sagte in Selbstgemachter Split will nicht so ....:
aber was es war werde ich nie erfahren. der effekt trat nicht mehr auf.
Gerüchten zur Folge kursieren hier im Forum in letzter Zeit einige Leute mit Zeitmaschinen. Vielleicht wendest du dich an die, um den alten Fehler nochmals zu reproduzieren?
-
@Jockelx sagte in Selbstgemachter Split will nicht so ....:
@Bushmaster sagte in Selbstgemachter Split will nicht so ....:
aber was es war werde ich nie erfahren. der effekt trat nicht mehr auf.
Gerüchten zur Folge kursieren hier im Forum in letzter Zeit einige Leute mit Zeitmaschinen. Vielleicht wendest du dich an die, um den alten Fehler nochmals zu reproduzieren?
zum beispiel mümmel der lümmel. er weiß jetzt schon, dass er in 2 monaten tot ist obwohl er sich ganz gesund fühlt. jedenfalls körperlich.
-
@Bushmaster
Ich glaube strtok() macht nicht genau das was du möchtest. Kann es sein das du die Variable arg in der Zwischenzeit verändert hast?Schau dir mal das folgende Beispiel an. Verändert man arg, so verändert man auch dein Ergebnis vs.
Online BeispielDie Lösung hierfür ist recht einfach. Packe deine Strings in std::string.
-
@Quiche-Lorraine sagte in Selbstgemachter Split will nicht so ....:
Ich glaube strtok() macht nicht genau das was du möchtest. Kann es sein das du die Variable arg in der Zwischenzeit verändert hast?
ja, strtok arbeitet so. ich kann ihm kein const char geben, weil es den string selber als 'workspace' nutzt.
@Quiche-Lorraine sagte in Selbstgemachter Split will nicht so ....:
Schau dir mal das folgende Beispiel an. Verändert man arg, so verändert man auch dein Ergebnis vs.
Online Beispieldanke. das schaue ich mir geich mal an.
-
@Quiche-Lorraine sagte in Selbstgemachter Split will nicht so ....:
@Bushmaster
Ich glaube strtok() macht nicht genau das was du möchtest. Kann es sein das du die Variable arg in der Zwischenzeit verändert hast?Schau dir mal das folgende Beispiel an. Verändert man arg, so verändert man auch dein Ergebnis vs.
Online BeispielDie Lösung hierfür ist recht einfach. Packe deine Strings in std::string.
du simulierst den fehler durch
arg[1] = ' '; arg[2] = ' '; arg[3] = ' ';
gleiches würdest du erreichen mit:
arg[1] = NULL;
strtok setzt nullen als trenner in das array.
kann irgendwas strtok dazu bewegt haben, eine null an die zweite position des input-arrays zu setzen?
-
@Bushmaster sagte in Selbstgemachter Split will nicht so ....:
kann irgendwas strtok dazu bewegt haben, eine null an die zweite position des input-arrays zu setzen?
Ein
strtok(arg, "o");
in main.Das
strtok
den String verändert ist blöd.
Noch blöder ist aber, dass es seinen Zustand (den Zeiger auf das Zeichen hinter dem gesetzten '\0') intern merkt.
So kann man nicht gleichzeitig mehrere Strings parsen.
-
@DirkB sagte in Selbstgemachter Split will nicht so ....:
Noch blöder ist aber, dass es seinen Zustand (den Zeiger auf das Zeichen hinter dem gesetzten '\0') intern merkt.
So kann man nicht gleichzeitig mehrere Strings parsen.ja, aber das ist eine bekannte einschränkung. also ich kann mir gut vorstellen, dass eine multithreading-fähige libc den strtok-state im 'thread local storage' speichert.