Fredrik90 Skrevet 24. oktober 2004 Del Skrevet 24. oktober 2004 (endret) Hei trenger litt hjelp her. her det framgangsmåten for og få text fra en fil til et program. int confiq(int &hight, int &with, bool &fullscreen,int &bits) { char a_word; ifstream infile; infile.open("FLIGHT-REAL//confiq.tex"); if (!infile){ MessageBox(NULL,"Could not open Confiq.tex\nif you have allterd it send a mail to [email protected]","error", MB_OK); return 0; } while (infile.eof==false) { infile>> a_word; //checking switch(a_word);{ //hight case: "hight"{ hight=a_word; break; } //with case: "with"{ with=a_word; break; } // bits case: "bits"{ bits=a_word; break; } case "fullscreen"{ fullscreen=a_word; break; } } }//confiq() det er sikkert noe syntax feil her men orker ikke å sjekke. og her kommer Confiq.tex height=600 with=800 fullscreen=true bit=32 mvh. Fredrik. Endret 24. oktober 2004 av Fredrik90 Lenke til kommentar
søppel Skrevet 24. oktober 2004 Del Skrevet 24. oktober 2004 (endret) Bruk space, newline, og/eller tab ("whitespace" -tegn) som separator -- da kan du lese annenhver ting (key value) "automatisk": ... while((cin >> key) && (cin >> value)) { ... ..så kan du modifisere (generalisere?) denne til å fungere med filstreamer (også?): template<typename T> M_inline void readStdin(T& t, std::string msg, std::string on_wrong_input) { std::cout << msg << std::flush; while(!(std::cin >> t)) { std::cout << on_wrong_input; std::cin.clear(); std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); std::cout << msg << std::flush; } } // readStdin Skulle være ganske simpelt å ordne. Endret 25. oktober 2004 av søppel Lenke til kommentar
Fredrik90 Skrevet 25. oktober 2004 Forfatter Del Skrevet 25. oktober 2004 Bruk space, newline, og/eller tab ("whitespace" -tegn) som separator -- da kan du lese annenhver ting (key value) "automatisk": ... while((cin >> key) && (cin >> value)) { ... ..så kan du modifisere (generalisere?) denne til å fungere med filstreamer (også?): template<typename T> M_inline void readStdin(T& t, std::string msg, std::string on_wrong_input) { std::cout << msg << std::flush; while(!(std::cin >> t)) { std::cout << on_wrong_input; std::cin.clear(); std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); std::cout << msg << std::flush; } } // readStdin Skulle være ganske simpelt å ordne. det går litt treigt kan du forklare litt. Lenke til kommentar
søppel Skrevet 25. oktober 2004 Del Skrevet 25. oktober 2004 (endret) config.txt: width 800 height 600 fullscreen 0 bits 32 main.cpp: #include <iostream> #include <fstream> using namespace std; class Viewport { public: unsigned int height, width; bool fullscreen; unsigned int bits; }; // Viewport std::ostream& operator<<(std::ostream& os, Viewport& vp) { os << "width " << vp.width << endl; os << "height " << vp.height << endl; os << "fullscreen " << vp.fullscreen << endl; os << "bits " << vp.bits << endl; return(os); } // operator<< template<typename T> void readIn(T& t, iostream& in) { if(!(in >> t)) { cerr << "syntax error reading config-file"; in.clear(); in.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); } } // readIn int main() { fstream f("config.txt"); Viewport viewport; string key; while(f >> key) { if(key == "height") readIn(viewport.height, f); if(key == "width") readIn(viewport.width, f); if(key == "fullscreen") readIn(viewport.fullscreen, f); if(key == "bits") readIn(viewport.bits, f); } cout << "Viewport:" << endl; cout << viewport << endl; return(0); } // main ..dette gikk fryktelig fort - masse som kunne vært forbedret:] Edit: Her er en idé: * Når noe går galt under "parsing" av config-fila, bør den nevne hvilken linje dette gjelder. Endret 25. oktober 2004 av søppel Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå