Um einen Zeitstempel von meinem String abzuziehen, verwende ich substring (pos, # char).So subtrahieren Sie einen spezifizierten Text von einem String mit der Funktion substring
Mein Code funktioniert teilweise. Das Problem, das ich habe, ist Konsistenz. Ich erhalte eine Zeichenfolge aus einer Textdatei im Format "Name Time", Beispiel: "Don 00:12".
Diese Zeichenfolge wird aus der Datei in HighScoreInfo1 extrahiert. Auch aus einer anderen Datei extrahiere ich einen String, der den Namensteil darstellt, in previous_name.
Mit dieser Information versuche ich die Position zu berechnen, an der der Teilstring beginnen soll.
int test = HighScoreInfo1.size() - (previous_name.size()+1);
Ich habe bereits Maßnahmen für die zusätzliche Char, die ein Leerzeichen ist, das ist die +2. 1 für den Raum und 1, um an die Position zu gelangen, an der er starten soll.
Der Zeitstempel 00:00 ist fünf Zeichen lang.
int test = HighScoreInfo1.size() - (previous_name.size()+2);
TimeToBeat = HighScoreInfo1.substr(test, 5);
TestFile << "Orginal string size " << ">>" << HighScoreInfo1.size() << " " << "size of name"<< ">>" <<previous_name.size()+2<<" " << "Position "<< test << endl;
TestFile << "Orginal string " << ">>"<<HighScoreInfo1 << " " << "Substring"<< ">>" <<TimeToBeat << endl;
das ist mein Ausgang mit einem langen Namen:
Orginal string size >>14 size of name>>10 Position >> 4
Orginal string >>Chrystel 00:09 Substring>>stel
Nebenbei bemerkt: Sie kann es nicht sehen, aber mit dem obigen Beispiel die Raum nach „STEL“ ist das fünfte Zeichen.
Das ist mein Ausgang mit einem kurzen Namen:
Orginal string size >>9 size of name>>5 Position>> 4
Orginal string >>Don 00:09 Substring >>00:09
mit dem kürzeren Namen i perfekt meinen Zeitstempel erhalten.
Wie kann dies funktioniert konsistent. Ich habe den Rest meines Codes nicht hinzugefügt, weil dieser Teil funktioniert. Es ist im Grunde nur der Teilstring Teil, der nicht konsistent arbeitet.
Wie kann ich das beheben?
Da die Zeit immer eine Größe von 5 hat, können Sie einfach 'HighScoreInfo1str (HighScoreInfo1.size() - 5);' und einfach ignorieren, was vor der Zeit ist. – DimChtz
Sie könnten eine Standardgröße festlegen, füllen Sie den Namen und füllen Sie den Rest mit einigen vordefinierten Zeichen, die Sie wissen, dass Sie ignorieren müssen. –