gpt4 book ai didi

c++ - 将 "\\n"转换为换行符

转载 作者:太空宇宙 更新时间:2023-11-03 10:30:15 25 4
gpt4 key购买 nike

我一次解析一个字符流,如下面高度简化的示例所示。我的问题是我需要将 \\n 转换为实际的换行符(对于任何其他转义字符也类似)。

有没有比我在这里完成的手动方法更好的方法?因为如果我必须以这种方式转换每个可能的转义字符,那将变得相当麻烦。

char c ;
std::stringstream s("foo \\n bar") ;

while (s.good()) {
c = s.get() ;
if (!s.good()) break ;
if (c == '\\' && s.get() == 'n') c = '\n' ;
std::cout << c ;
}

最佳答案

像这样:

int c;     // Not char.
while((c = s.get() != EOF)
{
if (c == '\\')
{
switch(int escaped = s.get())
{
case 't':
c = '\t';
break;
case 'n':
c = '\n';
break;
case 'a':
c = '\a';
...
default:
std::cout << c << escaped; // Retain "invalid variants".
c = 0;
break;
}
}
if (c)
{
std::cout << c;
}
}

请注意,如果您想要一个完整的解决方案,您还需要处理 \033\x1b\u0417(随机非八进制或十六进制的可打印字符,以及 unicode 字符)

关于c++ - 将 "\\n"转换为换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18689839/

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