mirror of
https://github.com/Mauler125/r5sdk.git
synced 2025-02-09 19:15:03 +01:00
Implement 'StringUnescape' properly
This commit is contained in:
parent
dc6bdc4a3a
commit
60b38e8904
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user