#include "FilenameEncode.h" #include #include std::set< char > unchangedChars; bool init = false; void initUnchangedChars() { if(init) return; for (char c = 'A'; c <= 'Z'; c++) unchangedChars.insert(c); for (char c = 'a'; c <= 'z'; c++) unchangedChars.insert(c); for (char c = '0'; c <= '9'; c++) unchangedChars.insert(c); unchangedChars.insert('.'); init = true; } std::string encodeFilename(std::string s) { initUnchangedChars(); std::stringstream ss; char a, b; for (unsigned int i = 0; i < s.size(); i++) { if (unchangedChars.count(s[i]) == 0) { a = s[i] / 16; if (a < 10) a += '0'; else a += 'A' - 10; b = s[i] % 16; if (b < 10) b += '0'; else b += 'A' - 10; ss << '_' << a << b;; } else { ss << s[i]; } } return ss.str(); }