gpt4 book ai didi

c++ - 将具有显式转义序列的字符串转换为相关字符

转载 作者:可可西里 更新时间:2023-11-01 15:03:46 25 4
gpt4 key购买 nike

我需要一个函数来将“显式”转义序列转换为相关的不可打印字符。Es:

char str[] = "\\n";
cout << "Line1" << convert_esc(str) << "Line2" << endl:

会给出这个输出:

Line1

Line2

有什么函数可以做到这一点吗?

最佳答案

我认为你必须自己编写这样的函数,因为转义字符是一个编译时特性,即当你编写 "\n" 时,编译器将替换 \n 带有 eol 字符的序列。生成的字符串的长度为 1(不包括终止零字符)。

在您的情况下,字符串 "\\n" 的长度为 2(同样不包括终止零)并且包含 \n.

您需要扫描您的字符串,并在遇到 \ 时检查以下字符。如果它是合法转义之一,则应将它们都替换为相应的字符,否则跳过或保留它们。

(http://ideone.com/BvcDE):

string unescape(const string& s)
{
string res;
string::const_iterator it = s.begin();
while (it != s.end())
{
char c = *it++;
if (c == '\\' && it != s.end())
{
switch (*it++) {
case '\\': c = '\\'; break;
case 'n': c = '\n'; break;
case 't': c = '\t'; break;
// all other escapes
default:
// invalid escape sequence - skip it. alternatively you can copy it as is, throw an exception...
continue;
}
}
res += c;
}

return res;
}

关于c++ - 将具有显式转义序列的字符串转换为相关字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5612182/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com