Generate correct C literals for non-ascii characters

This commit is contained in:
Max Brunsfeld 2014-09-28 18:27:47 -07:00
parent cb5ecbd491
commit 070dc76050
4 changed files with 35 additions and 26 deletions

View file

@ -7,6 +7,7 @@ namespace util {
using std::string;
using std::vector;
using std::set;
using std::to_string;
void str_replace(string *input, const string &search, const string &replace) {
size_t pos = 0;
@ -26,7 +27,7 @@ string escape_string(string input) {
return input;
}
string escape_char(char character) {
string escape_char(uint32_t character) {
switch (character) {
case '"':
return "'\\\"'";
@ -42,11 +43,9 @@ string escape_char(char character) {
return "'\\\\'";
default:
if (character >= ' ' && character <= '~') {
return string("'") + character + "'";
return string("'") + static_cast<char>(character) + "'";
} else {
char buffer[5];
snprintf(buffer, sizeof(buffer), "%d", static_cast<int>(character));
return string(buffer);
return to_string(character);
}
}
}