Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
std::string tmp; //Zum Auslesen der Textdat [..] int SlashPosFirst; //Position des ersten Slashes bool bFoundSlashPosFirst = false; int SlashPosSecond; //Position des zweiten Slashes std::string testString = "/"; //Um zu prüfen, ob char ein Slash ist -> geht sicher eleganter, war für mich in dem Moment einfacher //Temporäre Variablen um Ausgelesene Daten zwischenzuspeichern (mehr Übersicht) float fTmpH; float fTmpU; float fTmpBx; std::vector <float> Bx; //Interessant sind später nur die Unterschiede zwischen zwei aufeinanderfolgenden Werten (Anstieg) //Startwerte in Q laden -> Q wurde im Headder deklariert: std::vector<Vector2D> Q; //Bezeichnung folgt externen Papier // Vector2D eigene schlanke Vektor Klasse std::fstream fstrLoadData; fstrLoadData.open(strLoadSource); for (int j = 1; j <= 10000; j++) { getline(fstrLoadData, tmp); //nächste Zeile Laden for (int k = 0; k < m_GridSize; k++) { if (j == vecLineList[k]) { //Zeile auseinandernehmen und Daten Setzen //Trennstrich Position ermitteln for (int i = 0; i < tmp.length(); i++) { if (tmp[i] == testString[0]) //Prüfung auf Slash { if (!bFoundSlashPosFirst) { SlashPosFirst = i; bFoundSlashPosFirst = true; } else { SlashPosSecond = i; } } //if(tmp[i] == testString[0]) } //Ausgelesene Werte Zuweisen fTmpH = std::stof(tmp.substr(0, SlashPosFirst)); fTmpU = std::stof(tmp.substr(SlashPosFirst + 1, SlashPosSecond - SlashPosFirst - 1)); fTmpBx = std::stof(tmp.substr(SlashPosSecond + 1, tmp.length() - SlashPosSecond - 1)); Q.push_back(Vector2D(fTmpH, fTmpH*fTmpU)); Bx.push_back(fTmpBx); //Rückmeldung an User - wie viele Daten ausgelesen wurden std::cout << Q.size() << std::endl; k = m_GridSize; //For-Schleife vorzeitig verlassen, da andere Werte nicht mehr geprüft werden müssen }//if(j == vecLineList[k]) - passende Zeile gefunden }//for (int k = 0; k < m_GridSize; k++) }//for(int j = 1; j<=10000; j++ fstrLoadData.close(); |
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Mah0ney« (13.01.2015, 16:52) aus folgendem Grund: Problem gelöst; Flags für Suche einfügen
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Koschi« (13.01.2015, 06:43)
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Ach das muss man manuell aktivieren? Ist das kein default? (Falls nein, ist es wohl einfach zu lange her, dass ich das bei mir aktiviert habe)
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »dot« (13.01.2015, 11:43)
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
fstrLoadData.open(strLoadSource); int j = 0; //einfügen für die Prüfung if(j==vecLineList[k]) while (!fstrLoadData.eof()) //statt der bisherigen For-Schleife { j++; getline(fstrLoadData, tmp); //nächste Zeile Laden for (int k = 0; k < m_GridSize; k++) { if (j == vecLineList[k]) { //Zeile auseinandernehmen und Daten Setzen //Trennstrich Position ermitteln -> anstatt meiner "manuellen" Suche SlashPosFirst = tmp.find("/", 0); SlashPosSecond = tmp.find("/", SlashPosFirst + 1); //Ausgelesene Werte Zuweisen fTmpH = std::stof(tmp.substr(0, SlashPosFirst)); fTmpU = std::stof(tmp.substr(SlashPosFirst + 1, SlashPosSecond - SlashPosFirst - 1)); fTmpBx = std::stof(tmp.substr(SlashPosSecond + 1, tmp.length() - SlashPosSecond - 1)); Q.push_back(Vector2D(fTmpH, fTmpH*fTmpU)); Bx.push_back(fTmpBx); k = m_GridSize; //For-Schleife vorzeitig verlassen, da andere Werte nicht mehr geprüft werden müssen }//if(j == vecLineList[k]) - passende Zeile gefunden }//for (int k = 0; k < m_GridSize; k++) }//while (!fstrLoadData.eof()) fstrLoadData.close(); |
Im letzteren Fall solltest Du Dich unbedingt damit beschäftigen.
Ich würde allerdings mal raten, dass die ganzen substring-Aufrufe das Problem sind.
Im letzteren Fall solltest Du Dich unbedingt damit beschäftigen.
Den Debugger werde ich mir zeitnah auf jedenfall vornehmen.
Wieso nicht gleich, hast ja gerade eine wunderbare Chance, damit anzufangen?
Jede Sekunde, die du ohne Debugger verbringst, ist eine Sekunde zu viel. Der Debugger ist für einen Programmierer in etwa so wichtig wie die Luft zum Atmen...
Werbeanzeige