Daten richtig vergleichen String mit int?
-
Hallo,
hier ist erstmals mein Programm:
#include <iostream> #include <fstream> #include <string> using namespace std; int main() { // Text-Wiedergaben /* Verschiedene Ausgaben */ string discription = "Das Text-File muss sind im Hauptordner des Programmes befinden...!"; string leerzeile = " "; string start = "Drücke eine Taste um die Config zu checken..."; string beenden = "Druecke eine Taste um das Programm zu beenden!"; /* Hauptdateien */ string cl_movespeedkeyt = "cl_movespeedkey(0.52) wurde gefunden!"; string cl_movespeedkeyf = "cl_movespeedkey(0.52) wurde nicht gefunden!"; string cl_pitchspeedt = "cl_pitchspeed(255) wurde gefunden!"; string cl_pitchspeedf = "cl_pitchspeed(255) wurde nicht gefunden!"; string cl_showeventst = "cl_showevents(0) wurde gefunden!"; string cl_showeventsf = "cl_showevents(0) wurde nicht gefunden!"; string cl_pmanstatst = "cl_pmanstats(0) wurde gefunden!"; string cl_pmanstatsf = "cl_pmanstats(0) wurde nicht gefunden!"; string cl_lct = "cl_lc(1) wurde gefunden!"; string cl_lcf = "cl_lc(1) wurde nicht gefunden!"; string cl_lwt = "cl_lw(1) wurde gefunden!"; string cl_lwf = "cl_lw(1) wurde nicht gefunden!"; string d_spriteskipt = "d_spriteskip(0) wurde gefunden!"; string d_spriteskipf = "d_spriteskip(0) wurde nicht gefunden!"; string gl_monolightst = "gl_monolights(0) wurde gefunden!"; string gl_monolightsf = "gl_monolights(0) wurde nicht gefunden!"; string gl_picmipt = "gl_picmip(0) wurde gefunden!"; string gl_picmipf = "gl_picmip(0) wurde nicht gefunden!"; string gl_polyoffsett = "gl_polyoffset(0) wurde gefunden!"; string gl_polyoffsetf = "gl_polyoffset(0) wurde nicht gefunden!"; string s_showt = "s_show(0) wurde gefunden!"; string s_showf = "s_show(0) wurde nicht gefunden!"; string s_a3dt = "s_a3d(0) wurde gefunden!"; string s_a3df = "s_a3d(0) wurde nicht gefunden!"; string lightgammat = "lightgamma(2.5) wurde gefunden!"; string lightgammaf = "lightgamma(2.5) wurde nicht gefunden!"; string texgammat = "texgamma(2.0) wurde gefunden!"; string texgammaf = "texgamma(2.0) wurde nicht gefunden!"; string net_grapht = "net_graph(0) wurde gefunden!"; string net_graphf = "net_graph(0) wurde nicht gefunden!"; string cl_showerrort = "cl_showerror(0) wurde gefunden!"; string cl_showerrorf = "cl_showerror(0) wurde nicht gefunden!"; // Programm START cout << discription << endl; cout << leerzeile << endl; cout << start << endl; cin.get(); // File Einlesen ifstream file("c:\\testfile.txt"); // Search-Function string line; while(getline(file,line)) { // cl_movespeedkey if(line.find("cl_movespeedkey") != string::npos) { cout << cl_movespeedkeyt << endl; } else { cout << cl_movespeedkeyf << endl; } // cl_pitchspeed if(line.find("cl_pitchspeed") != string::npos) { cout << cl_pitchspeedt << endl; } else { cout << cl_pitchspeedf << endl; } // cl_showevents if(line.find("cl_showevents") != string::npos) { cout << cl_showeventst << endl; } else { cout << cl_showeventsf << endl; } // cl_pmanstats if(line.find("cl_pmanstats") != string::npos) { cout << cl_pmanstatst << endl; } else { cout << cl_pmanstatsf << endl; } // cl_lc if(line.find("cl_lc") != string::npos) { cout << cl_lct << endl; } else { cout << cl_lcf << endl; } // cl_lw if(line.find("cl_lw") != string::npos) { cout << cl_lwt << endl; } else { cout << cl_lwf << endl; } // d_spriteskip if(line.find("d_spriteskip") != string::npos) { cout << d_spriteskipt << endl; } else { cout << d_spriteskipf << endl; } // gl_monolights if(line.find("cl_pitchspeed") != string::npos) { cout << gl_monolightst << endl; } else { cout << gl_monolightsf << endl; } // gl_picmip if(line.find("gl_picmip") != string::npos) { cout << gl_picmipt << endl; } else { cout << gl_picmipf << endl; } // gl_polyoffset if(line.find("gl_polyoffset") != string::npos) { cout << gl_polyoffsett << endl; } else { cout << gl_polyoffsetf << endl; } // s_show if(line.find("s_show") != string::npos) { cout << s_showt << endl; } else { cout << s_showf << endl; } // s_a3d if(line.find("s_a3d") != string::npos) { cout << s_a3dt << endl; } else { cout << s_a3df << endl; } // lightgamma if(line.find("lightgamma") != string::npos) { cout << lightgammat << endl; } else { cout << lightgammaf << endl; } // texgamma if(line.find("texgamma") != string::npos) { cout << texgammat << endl; } else { cout << texgammaf << endl; } // net_graph if(line.find("net_graph") != string::npos) { cout << net_grapht << endl; } else { cout << net_graphf << endl; } // cl_showerror if(line.find("cl_showerror") != string::npos) { cout << cl_showerrort << endl; } else { cout << cl_showerrorf << endl; } } //Programm Beenden cout << leerzeile << endl; cout << beenden << endl; cin.get(); //system("PAUSE"); return 0; }Also was soll mein Programm machen?
Es soll Werte in einer Textdatei überprüfen ob die stimmen wie ich sie vorgebe.
Zum Beispiel soll cl_movespeedkey den Wert 0.52 bekommen, da es ja ein Int ist,
weiß ich nicht, wie ich den Wert in meine Funktion mit einbauen soll. Weil
das geht ja nicht:// cl_movespeedkey if(line.find("cl_movespeedkey 0.52") != string::npos) { cout << cl_movespeedkeyt << endl; } else { cout << cl_movespeedkeyf << endl; }In der Textdatei steht das so: cl_movespeedkey "0.52", dass kann es dann ja
natürlich nicht finden.Weiß einer eine Lösung?
MfG
-
Ich verstehe die Frage nicht
-
Ich möchte ein Programm machen, dass Werte in einer Textdatei vergleicht.
Das Problem ist, dass cl_movespeedkey "0.52" aus einem String und Int besteht.
Ich weiß nicht, wie ich das in meiner Funktion mache das er nach cl_movespeedkey "0.52" sucht und nicht nur nach cl_movespeedkey.
-
Meinst du
"cl_movespeedkey \"0.52\""?
-
Ja das mit dem /"0.52/"" ist auch gut zu wissen, nur weiß ich nicht wie ich aus dem 0.52 ein string mache
-
-
So wie ich dich verstehe steht das in einer Datei, oder? Dann ist das doch ein String. Zahlenwerte kannst du nur in Binärdateien abspeichern, alles was du mit einem Editor lesen kannst, sind Strings.
-
ah k, danke. werde ich gleich mal testen
-
// cl_movespeedkey if(line.find("cl_movespeedkey \"0.52\"") != string::npos) { cout << cl_movespeedkeyt << endl; }geht, danke
UPDATE:
wie kann ich jetzt in mein Programm abfragen, ob der Wert 0.52 verändert wurde, wenn er nicht 0.52 entspricht, sondern 0.53 z.B ?
-
Also falls du den Wert hinter deinem Parameter nicht kennst,
wirst du reguläre Ausdrücke brauchen oder du suchst nur nach dem
Parameternamen und nimmst das, was darauf folgt als Wert.Ich denke du suchst sowas in der Art
#include<iostream> #include<string> bool getValue(const std::string& text, const std::string& par, std::string& parVal){ size_t index1 = text.find(par); size_t parLength = par.size(); if(index1 != std::string::npos) { size_t startSearch = index1+parLength+1; size_t index2 = text.find(" ", startSearch); if(index2 != std::string::npos){ parVal = text.substr(startSearch, index2-startSearch); } else{ parVal = text.substr(startSearch, text.size()-startSearch); } return true; } return false; } void check(const std::string& text, const std::string& par){ std::string parValue; if(getValue(text, par, parValue)){ std::cout << par << ": \"" << parValue << "\"" << std::endl; } else { std::cout << par << " not found" << std::endl; } } void checkAll(const std::string& text){ std::cout << text << std::endl; check(text, "cl_movespeedkey"); check(text, "cl_pitchspeed"); } int main() { std::string text1("Dein Text enhält cl_movespeedkey 0.52 und cl_pitchspeed 0.53"); std::string text2("Dein Text enhält cl_movespeedkey 0.51 und cl_pitchspeed 0.54"); std::string text3("Hallo darvis"); checkAll(text1); checkAll(text2); checkAll(text3); return 0; }Wenn du den String jetzt als double haben möchtest, dann klick meinen ersten Link an

-
sehr gut danke, aber welcher erste link?
-
...