Ich frage mich, ob es ein Weg, um eine temporäre Zeichenfolge in diesem Fall zu vermeiden ist, mit:vermeiden, temporäre Zeichenfolgen mit .c_str-Befehl zu verwenden?
tempString = inputString.substr(commaLast,commaCurrent-1);
yPos = strtod(tempString.c_str(), NULL);
Es gibt keine Möglichkeit, den substr Befehl zu verwenden und ein c_str Rückkehr ohne zuerst den Teil in einer temporären Zeichenfolge zu speichern (Angenommen, ich möchte die ursprüngliche Zeichenfolge nicht ändern).
Machst du sonst noch etwas mit inputString? Die Tatsache, dass Sie strtod und c_str an erster Stelle verwenden, deutet darauf hin, dass Sie stattdessen eine bessere Lösung mit einem std :: stringstream erhalten könnten. –
Ja, ich teile die Zeichenfolge basierend auf verschiedenen Bedingungen. Ich versuche eine SVG-Zeile zu parsen. Ich habe mir std :: strainsteam angeschaut, aber ich dachte, das wäre nur gut für die Whitespace-Aufteilung. – jimspree1200
Der >> Operator ist standardmäßig whitespace, aber Sie müssen sich nicht davon abhalten lassen; Mit einem Stringstream können Sie String-Daten genauso verarbeiten wie mit std :: cin, also können Sie vor/nach dem Lesen nachfolgende Zeichen überspringen, indem Sie 'istream :: ignore (/ * ... * /)' up verwenden zu und einschließlich eines beliebigen Trennzeichens Ihrer Wahl. (Ich weiß nicht viel über das SVG-Format, so dass es für Sie nützlich sein kann oder auch nicht - aber ich finde, es funktioniert gut für einfache abgegrenzte Daten) –