C++ 去转义字符 封装方法
时间: 2023-10-29 20:06:03 浏览: 250
以下是一个简单的 C++ 函数,可以将字符串中的转义字符还原为原始字符:
```cpp
#include <iostream>
#include <string>
std::string unescape(const std::string& str) {
std::string result;
for (std::string::size_type i = 0; i < str.size(); ++i) {
if (str[i] == '\\' && i + 1 < str.size()) {
switch (str[i + 1]) {
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;
case '\'': result += '\''; break;
case '\"': result += '\"'; break;
case '?': result += '\?'; break;
default: break;
}
++i;
} else {
result += str[i];
}
}
return result;
}
int main() {
std::string str = "Hello\\nworld!";
std::cout << unescape(str) << std::endl;
return 0;
}
```
该函数遍历输入字符串中的每个字符,如果遇到反斜杠字符,则根据下一个字符的类型将其转换为对应的原始字符,并将其添加到结果字符串中。否则,将字符添加到结果字符串中。
该函数可以处理以下转义序列:`\a`(响铃符)、`\b`(退格符)、`\f`(进纸符)、`\n`(换行符)、`\r`(回车符)、`\t`(制表符)、`\v`(纵向制表符)、`\\`(反斜杠)、`\'`(单引号)和`\"`(双引号)。如果输入字符串中包含其他转义序列,则它们将转换为字面上的反斜杠后的字符。
在上面的示例中,输入字符串`"Hello\\nworld!"`中的`\n`将被还原为换行符,输出将是:
```
Hello
world!
```
阅读全文