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 |
std::string tempName; int tempScore; |
C-/C++-Quelltext |
|
1 2 |
std::cout << "name: " << tempName << std::endl; std::cout << "score: " << tempScore << "\t indexCount: " << indexCount << std::endl; |
Zitat
load the list
nElements: 10
LesePuffer:
Gr÷▀e LesePuffer: 112
name: woodstock
score: 4500 indexCount: 8
name: hobbes
score: 2600 indexCount: 23
name: tweety
score: 2300 indexCount: 35
name: snoopy
score: 1200 indexCount: 47
name: name
score: 1000 indexCount: 59
name: name
score: 900 indexCount: 68
name: name
score: 800 indexCount: 77
name: name
score: 700 indexCount: 86
name: calvin
score: 600 indexCount: 95
name: name
score: 600 indexCount: 107
Enter GameLoop
C-/C++-Quelltext |
|
1 2 |
std::cout << "name: " << tempName; std::cout << " score: " << tempScore << "\t indexCount: " << indexCount << std::endl; |
C-/C++-Quelltext |
|
1 |
std::cout << "name: " << tempName << " score: " << tempScore << "\t indexCount: " << indexCount << std::endl; |
Zitat
nElements: 10
LesePuffer:
Gr÷▀e LesePuffer: 112
score: 4500 indexCount: 8
score: 2600 indexCount: 23
score: 2300 indexCount: 35
score: 1200 indexCount: 47
name: namescore: 1000 indexCount: 59
name: namescore: 900 indexCount: 68
name: namescore: 800 indexCount: 77
name: namescore: 700 indexCount: 86
score: 600 indexCount: 95
name: namescore: 600 indexCount: 107
Enter GameLoop
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 |
bool CHighscore::LoadList() { std::cout << "load the list " << std::endl; m_ScoreList.clear(); std::ifstream Input("./Data/Highscore.sav",std::ios::in | std::ios::binary); int nElements=0; if(Input!=NULL) { Input.seekg(0,ios::end); streamsize len=Input.tellg(); Input.seekg(0,ios::beg); char *buffer= new char[len]; Input.seekg(0,ios::beg); Input.read(buffer,len); Input.seekg(0,ios::beg); Input.read((char *) &nElements,sizeof(nElements)); std::cout << "nElements: " << nElements << std::endl; std::cout << "LesePuffer: "<< (buffer) << std::endl; std::cout << "Größe LesePuffer: " << len << std::endl; int indexCount=sizeof(nElements); for (int i=0;i<nElements;i++) { int tempScore=0; CScoreEntry tempEntry; Input.seekg(indexCount,ios::beg); Input.read((char *) &tempScore,sizeof(tempScore)); indexCount+=sizeof(tempScore); std::string tempName = buffer+indexCount; // std::cout durch printf ersetzt, was aber das gleiche Resultat wie oben beschrieben zeigt printf("Name: %s \t Score: %i \t IndexCount: %i\n",tempName.c_str(),tempScore,indexCount); indexCount+=tempName.size()+1; tempEntry.m_sName=tempName; tempEntry.m_iScore=tempScore; m_ScoreList.push_back(tempEntry); } delete []buffer; Input.close(); return true; } else { std::cout << "Couldn't load Highscore list! Will create a new empty List!" << std::endl; Input.close(); MakeList(m_iMax); SaveList(); return false; } } |
Zitat von »"riCo"«
Kann man std::string so einfach mit cout ausgeben? Muss man da nicht .c_str() verwenden?
Auch wenn es nicht die unbedingte Lösung deines problems ist, aber nutze doch einfach die printf-Funktion? Zu cout kann ich leider nicht mehr sagen, da ich das nie verwende..
Der ganze Funktions-Code wäre in dem Fall vielleicht sinnvoller, als deine Code-Fragmente.
Zitat von »"physX"«
Zitat von »"riCo"«
Kann man std::string so einfach mit cout ausgeben? Muss man da nicht .c_str() verwenden?
Auch wenn es nicht die unbedingte Lösung deines problems ist, aber nutze doch einfach die printf-Funktion? Zu cout kann ich leider nicht mehr sagen, da ich das nie verwende..
Der ganze Funktions-Code wäre in dem Fall vielleicht sinnvoller, als deine Code-Fragmente.
Hallo .c_str() hatte ich bereits getestet und bekam dabei das gleiche Ergebnis. Über sprintf hab ich noch nicht ausprobiert werd ich aber gleich mal machen.
danke
Gruss
Zitat von »"physX"«
es wird also in den ersten paar Zeilen nicht mehr "name: <tempName>" angezeigt. Ausserdem wird das Leerzeichen bei " score" ignoriert. woran könnte das liegen?
Zitat von »"riCo"«
Kann man std::string so einfach mit cout ausgeben? Muss man da nicht .c_str() verwenden?
Zitat von »"dot"«
Zitat von »"physX"«
es wird also in den ersten paar Zeilen nicht mehr "name: <tempName>" angezeigt. Ausserdem wird das Leerzeichen bei " score" ignoriert. woran könnte das liegen?
Zeig mal den ganzen Code der Schleife. Was genau ist tempName, wird es vielleicht von einer lokalen Variable geshadowed?
Zitat von »"riCo"«
Kann man std::string so einfach mit cout ausgeben? Muss man da nicht .c_str() verwenden?
ja man kann std::strings einfach so nach cout ausgeben
Zitat von »"dot"«
oh, sry, hab ich übersehen...
Hast du das teil denn mal debuggt? Bist du dir wirklich 100% ig sicher dass in dem String da das richtige drin steht? So ganz mag ich da nämlich irgendwie net glauben...
Werbeanzeige