bool PConvert::get_map_integer( MapString &map, const std::string &key , int &val ) { MapString::iterator it = map.find( key ) ; if ( it == map.end() ) { return false ; } val = atoi( it->second.c_str() ) ; return true ; }
bool PConvert::get_map_string( MapString &map, const std::string &key , std::string &val ) { MapString::iterator it = map.find( key ) ; if ( it == map.end() ) { return false ; } val = it->second ; return true ; }
std::string replaceTags(const std::string& _data) { // вот хз, что быстрее, итераторы или математика указателей, // дл¤ непон¤тно какого размера одного символа UTF8 std::string line(_data); std::string::iterator end = line.end(); for (std::string::iterator iter=line.begin(); iter!=end; ) { if (*iter == '#') { ++iter; if (iter == end) { return line; } else { if (*iter != '{') { ++iter; continue; } std::string::iterator iter2 = iter; ++iter2; while (true) { if (iter2 == end) { return line; } if (*iter2 == '}') { size_t start = iter - line.begin(); size_t len = (iter2 - line.begin()) - start - 1; const std::string & tag = line.substr(start + 1, len); MapString::iterator replace = mUserMapLanguage.find(tag); replace != mUserMapLanguage.end(); iter = line.erase(iter - size_t(1), iter2 + size_t(1)); size_t pos = iter - line.begin(); if (replace != mUserMapLanguage.end()) { line.insert(pos, replace->second); iter = line.begin() + pos + replace->second.length(); } end = line.end(); if (iter == end) { return line; } break; } ++iter2; }; } } else { ++iter; } } return line; }