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;
result.reserve(svInput.size());
bool escaped = false;
for (const char c : svInput)
{
switch (c)
if (escaped)
{
//case '\\': result += "\'"; break;
case '\\a': result += "\a"; break;
case '\\b': result += "\b"; break;
case '\\f': result += "\f"; break;
case '\\n': result += "\n"; break;
case '\\r': result += "\r"; break;
case '\\t': result += "\t"; break;
case '\\v': result += "\v"; break;
default: result += c; break;
switch (c)
{
case 'a': result += '\a'; break;
case 'b': result += '\b'; break;
case 'f': result += '\f'; break;
case 'n': result += '\n'; break;
case 'r': result += '\r'; break;
case 't': result += '\t'; break;
case 'v': result += '\v'; break;
case '\\': result += '\\'; break;
default: result += '\\'; result += c; break;
}
escaped = false;
}
else
{
if (c == '\\')
{
escaped = true;
}
else
{
result += c;
}
}
}
return result;
}