escapejosn.cpp

Run Settings
LanguageC++
Language Version
Run Command
#include <iostream> #include <sstream> #include <iomanip> using namespace std; std::string EscapeJsonString(const std::string &s) { std::ostringstream o; for (std::string::const_iterator c = s.begin(); c != s.end(); c++) { //for (auto c = s.cbegin(); c != s.cend(); c++) { switch (*c) { case '"': o << "\\\""; break; case '\\': o << "\\\\"; break; case '\b': o << "\\b"; break; case '\f': o << "\\f"; break; case '\n': o << "\\n"; break; case '\r': o << "\\r"; break; case '\t': o << "\\t"; break; default: if ('\x00' <= *c && *c <= '\x1f') { o << "\\u" << std::hex << std::setw(4) << std::setfill('0') << (int)*c; } else { o << *c; } } } return o.str(); } std::string escapeJsonString(const std::string& input) { std::ostringstream ss; for (auto iter = input.cbegin(); iter != input.cend(); iter++) { //C++98/03: //for (std::string::const_iterator iter = input.begin(); iter != input.end(); iter++) { switch (*iter) { case '\\': ss << "\\\\"; break; case '"': ss << "\\\""; break; case '/': ss << "\\/"; break; case '\b': ss << "\\b"; break; case '\f': ss << "\\f"; break; case '\n': ss << "\\n"; break; case '\r': ss << "\\r"; break; case '\t': ss << "\\t"; break; default: ss << *iter; break; } } return ss.str(); } std::string escape_json(const std::string &s) { std::ostringstream o; for (auto c = s.cbegin(); c != s.cend(); c++) { switch (*c) { case '\x00': o << "\\u0000"; break; case '\x01': o << "\\u0001"; break; case '\x0a': o << "\\n"; break; case '\x1f': o << "\\u001f"; break; case '\x22': o << "\\\""; break; case '\x5c': o << "\\\\"; break; default: o << *c; } } return o.str(); } int main() { string s = "\tHello''\"''\\ Wor\nld!"; cout << "Hello'''''' World!"<<endl; cout << escapeJsonString(s)<<endl; cout << escape_json(s)<<endl; cout << "test" + EscapeJsonString(s) <<endl; return 0; }
Editor Settings
Theme
Key bindings
Full width
Lines