Forumo paieška
'File read' .
Pagal jūsų užklausą pavyko rasti 1 rezultatą
-
Sveiki, šioje pamokoje parodysiu kaip nuskaityti config failo duomenis. Aš naudosiu šį pavyzdį: [DISPLAY] ScreenWidth=1024; Our screen width ScreenHeight=768; Our screen height FullScreen=0; Full screen or windowed VSync=1; Vertex sync Taigi pradžioj turime užkrauti failą: bool ConfigParser::Load(std::string file) { File.open(file.c_str()); return File.is_open(); } Viską ką daro ši funkcija tai atidaro failą ir gražina true jei buvo atidarytas, false jei ne. Toliau ką turime padaryti tai pašalinti užkomentuotą tekstą tai gali būti ir užkomentuoti kintamieji ir paliktas komentaras prie kintamojo: void ConfigParser::RemoveComments(std::string& line) { if (line.find(';') != line.npos) line.erase(line.find(';')); } Ši funkcija ištriną viską po ; skiriamojo ženklo toje eilutėje kuri paduodama kaip funkcijos argumentas. & tiesiog reiškia kad imsime atminties adresą tai leidžia keisti kintamojo reikšme kuris paduodamas kaip argumentas. Na ir paskutinė funkcija: int ConfigParser::Read(std::string option) { if (!File.is_open()) return 0; std::string lineBuffer; while (std::getline(File, lineBuffer)) { if (int(lineBuffer.find(option)) != -1) { RemoveComments(lineBuffer); lineBuffer.erase(0, option.length()); return atoi(lineBuffer.c_str()); } } return 0; } Ši funkcija ieško "option" failo eilutėse ir jei randa ištrina komentarus ir "option" taigi lieka tik reikšmė(value) Ir ją gražina integer reikšme. Taigi aptarėme ką daro funkcijos na ir štai rezultatas: #include <iostream> #include <fstream> #include <string> class ConfigParser { public: ConfigParser() {} ~ConfigParser() { File.close(); } bool Load(std::string file); int Read(std::string option); void RemoveComments(std::string &line); private: std::fstream File; }; bool ConfigParser::Load(std::string file) { File.open(file.c_str()); return File.is_open(); } int ConfigParser::Read(std::string option) { if (!File.is_open()) return 0; std::string lineBuffer; while (std::getline(File, lineBuffer)) { if (int(lineBuffer.find(option)) != -1) { RemoveComments(lineBuffer); lineBuffer.erase(0, option.length()); return atoi(lineBuffer.c_str()); } } return 0; } void ConfigParser::RemoveComments(std::string& line) { if (line.find(';') != line.npos) line.erase(line.find(';')); } int main() { ConfigParser cfg; if (!cfg.Load("config.ini")) return 0; std::cout << cfg.Read("ScreenWidth=") << "\n"; std::cout << cfg.Read("ScreenHeight=") << "\n"; std::cout << cfg.Read("FullScreen=") << "\n"; std::cout << cfg.Read("VSync=") << "\n"; system("pause"); return 0; } Kaip matote viskas veikia Užkrauti pavyko. Šie failai gali būti panaudoti žaidimo pirminiams duomenims saugoti. Jei kas kam neaišku klauskite atsakysiu. P.S.: Sorry kad naudojau klase gal kas nesupranta. Bet Čia C++ GOT DAMN!!