Implement 'StringUnescape' properly

This commit is contained in:
Kawe Mazidjatari 2023-04-08 18:05:05 +02:00
parent dc6bdc4a3a
commit 60b38e8904

View File

@ -714,22 +714,39 @@ string StringUnescape(const string& svInput)
{ {
string result; string result;
result.reserve(svInput.size()); result.reserve(svInput.size());
bool escaped = false;
for (const char c : svInput) for (const char c : svInput)
{
if (escaped)
{ {
switch (c) switch (c)
{ {
//case '\\': result += "\'"; break; case 'a': result += '\a'; break;
case '\\a': result += "\a"; break; case 'b': result += '\b'; break;
case '\\b': result += "\b"; break; case 'f': result += '\f'; break;
case '\\f': result += "\f"; break; case 'n': result += '\n'; break;
case '\\n': result += "\n"; break; case 'r': result += '\r'; break;
case '\\r': result += "\r"; break; case 't': result += '\t'; break;
case '\\t': result += "\t"; break; case 'v': result += '\v'; break;
case '\\v': result += "\v"; break; case '\\': result += '\\'; break;
default: result += c; break; default: result += '\\'; result += c; break;
}
escaped = false;
}
else
{
if (c == '\\')
{
escaped = true;
}
else
{
result += c;
} }
} }
}
return result; return result;
} }