configFile.cpp (1084B)
1 #include "configFile.h" 2 3 #include <fstream> 4 5 namespace baseLib 6 { 7 namespace 8 { 9 bool needsTrim(const char _c) 10 { 11 switch (_c) 12 { 13 case ' ': 14 case '\r': 15 case '\n': 16 case '\t': 17 return true; 18 default: 19 return false; 20 } 21 } 22 23 std::string trim(std::string _s) 24 { 25 while (!_s.empty() && needsTrim(_s.front())) 26 _s = _s.substr(1); 27 while (!_s.empty() && needsTrim(_s.back())) 28 _s = _s.substr(0, _s.size() - 1); 29 return _s; 30 } 31 } 32 33 ConfigFile::ConfigFile(const char* _filename) 34 { 35 std::ifstream file(_filename, std::ios::in); 36 37 if (!file.is_open()) 38 return; 39 40 std::string line; 41 42 while(std::getline(file, line)) 43 { 44 if(line.empty()) 45 continue; 46 47 // // comment? 48 if (line.front() == '#' || line.front() == ';') 49 continue; 50 51 const auto posEq = line.find('='); 52 53 if (posEq == std::string::npos) 54 continue; 55 56 const auto key = trim(line.substr(0, posEq)); 57 const auto val = trim(line.substr(posEq + 1)); 58 59 add(key, val); 60 } 61 } 62 63 ConfigFile::ConfigFile(const std::string& _filename) : ConfigFile(_filename.c_str()) 64 { 65 } 66 }