json 용 escape 처리
json 으로 문자열을 내려보낼때 개행 같은 문자가 문자열에 포함된 경우
내용자체가 개행되서 처리될 경우 변경하는 방법
------- string 을 바로 변경하는 경우
#include <string>
#include <sstream>
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();
}
--------- ascii char 형태인 경우 (변수는 알아서 적용할것)
for(_UInt32 i = 0; i < node->m_Value->m_Value.length(); ++i)
{
if(node->m_Value->m_Value[i] == 34) //"
{
str += "\\\"";
}
else if(node->m_Value->m_Value[i] == 92)
{
str += "\\\\";
}
else if(node->m_Value->m_Value[i] == 13)
{
//str += "\\r";
}
else if(node->m_Value->m_Value[i] == 10)
{
str += "\\n";
}
else if(node->m_Value->m_Value[i] == 8)
{
str += "\\b";
}
else if(node->m_Value->m_Value[i] == 9)
{
str += "\\t";
}
else
str += node->m_Value->m_Value[i];
}