#include "converter.h" #include extern std::ofstream frostLogFile; extern bool frostLogging; namespace utils { void int2str(__int64 n, std::string& str) { str = ""; if(!n) { str = "0"; return; } bool b = n < 0; if(b) { n *= -1; } while(n) { str = char('0' + (n % 10)) + str; n /= 10; } if(b) { str = char('-') + str; } } std::string int2str(__int64 u) { std::string s; int2str(u, s); return s; } void trim(std::string& s) { std::string::size_type i = 0, j = 0; while((i < s.size()) && (isspace((unsigned char)s[i]) || !s[i] || ('\n'==s[i]))) ++i; j = s.size(); while((0 < j) && (isspace((unsigned char)s[j-1]) || !s[j-1] || ('\n'==s[j-1]))) --j; if((j-i) != s.size()) { s = (i == j ? "": s.substr(i, j - i)); } } void trim(std::wstring& s) { std::string::size_type i = 0, j = 0; while((i < s.size()) && (isspace((unsigned short)s[i]) || !s[i] || (L'\n'==s[i]))) ++i; j = s.size(); while((0 < j) && (isspace((unsigned short)s[j-1]) || !s[j-1] || (L'\n'==s[j-1]))) --j; if((j-i) != s.size()) { s = (i == j ? L"": s.substr(i, j - i)); } } std::string trim(const std::string& s) { std::string t(s); trim(t); return t; } __int64 str2int(const std::string& n_str, bool& err) { std::string str(n_str); trim(str); __int64 n = 0; err = false; if(str.empty() || str.size() > 21) { err = true; return n; } size_t i=0; if('-' == str[0]) { ++i; } for(; i> 60)), (unsigned char)(0xf & (u >> 56)), (unsigned char)(0xf & (u >> 52)), (unsigned char)(0xf & (u >> 48)), (unsigned char)(0xf & (u >> 44)), (unsigned char)(0xf & (u >> 40)), (unsigned char)(0xf & (u >> 36)), (unsigned char)(0xf & (u >> 32)), (unsigned char)(0xf & (u >> 28)), (unsigned char)(0xf & (u >> 24)), (unsigned char)(0xf & (u >> 20)), (unsigned char)(0xf & (u >> 16)), (unsigned char)(0xf & (u >> 12)), (unsigned char)(0xf & (u >> 8)), (unsigned char)(0xf & (u >> 4)), (unsigned char)(0xf & u)}; size_t i = 0; while(i < 15 && !x[i]) ++i; for(; i<16; ++i) { switch(x[i]) { case 0x0: s += '0'; break; case 0x1: s += '1'; break; case 0x2: s += '2'; break; case 0x3: s += '3'; break; case 0x4: s += '4'; break; case 0x5: s += '5'; break; case 0x6: s += '6'; break; case 0x7: s += '7'; break; case 0x8: s += '8'; break; case 0x9: s += '9'; break; case 0xa: s += 'a'; break; case 0xb: s += 'b'; break; case 0xc: s += 'c'; break; case 0xd: s += 'c'; break; case 0xe: s += 'e'; break; case 0xf: s += 'f'; break; } } return s; } void to_words(const std::string& s, std::vector& v) { v.clear(); std::string::size_type i = 0, j = 0; while(i < s.size()) { while(i < s.size() && isspace(s[i])) ++i; if(i < s.size()) { j = i + 1; while(j < s.size() && !isspace(s[j])) ++j; v.push_back(s.substr(i, j-i)); i = j; } } } }