so das könnte eine sehr offensichtliche Frage für einige sein, aber ich habe keine Ahnung, wo auf diesen Fehler zu starten.C++ Stoi sendet manchmal Ausnahme mit Leerzeichen
Ich habe einige Code, der einige Zeichenfolgen aus einer TXT-Datei liest, alle Zeichenfolgen haben ein ":" und dann nach einer Zahl. Beispiel:
Objekte pro Farbe: 1
Anzahl der Roboter: 10
Vordefinierte Positionen: 1
Wenn ich die Werte von Hand bearbeiten, die stoi funktioniert gut, aber wenn aC# -Code schreibt die Werte in die selbe Datei (beachten Sie, dass ich manuell überprüft habe, und es gibt identische, keine zusätzlichen Leerzeichen, keine zusätzlichen Zeichen, nichts visuell anders) beschwert sich der stoi. Mein Code ist die nächste:
C++:
cout << "Number..." << endl;
cout << dataLine.substr(dataLine.find_first_of(":")+1) << endl;
try{
cfgVals.push_back(stoi(dataLine.substr(dataLine.find_first_of(":")+1)));
}catch(exception& ex){
cout << ex.what() << endl;
}
In beiden Fällen sind die cout von Datenleitung einen Raum sendet und dann die Nummer "1" oder "10". Wenn die Datei von mir bearbeitet wird, löst stoi keine Ausnahme aus, sondern bearbeitet sie mit dem anderen Programm, tut es aber (und trotzdem scheint es die Konvertierung richtig zu machen).
Der Befehl, den ich verwende, um die Datei in C# zu schreiben, ist sehr einfach:
File.WriteAllLines(@nameFile, param);
Wo param eine Liste von Strings ist.
Hoffe ich bin klar genug, irgendeine Idee? Danke im Voraus!
Haben Sie schon einmal über den Charakter kodieren in Betracht ziehen? vielleicht schreibt Ihre "C#" Datei als 'UTF-8', und wie ich weiß 'stoi' beschäftigt sich mit 'ASCII' –
Was ist die Ausnahme - d. h. was gibt ex.what() zurück? –
@Freeman Zhang, du könntest etwas vorhaben ... Ich werde mir das ansehen. – gkapellmann