gpt4 book ai didi

C++将wchar_t反斜杠插入字符串

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:43:49 25 4
gpt4 key购买 nike

我有一个宽字 rune 字:

const wchar_t* charSet =  L" !\"#$%&'()*+,-./0123456789:;<=>?\n"
L"@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_\n"
L"`abcdefghijklmnopqrstuvwxyz{|}~\n";

当我将它传递给文本处理器时,'\'(反斜杠)不存在。现在如果我用\\代替它

我遇到编译时错误:

"missing closing quote"

那么如何将反斜杠放入这样的字符字符串中呢?

最佳答案

至于你的原始代码

L" !\"#$%&'()*+,-./0123456789:;<=>?\n"

您只是错过了再次转义引号字符 "。添加另一个 \ 你会得到

L" !\\"#$%&'()*+,-./0123456789:;<=>?\n"

此时未转义的 " 关闭文字。 " 的下一次出现将打开一个新文字,但它是不平衡的,因此会出现编译器错误消息(您甚至可以在此处的代码标记中发现效果)。您需要添加进一步的 \ 以再次转义 ":

L" !\\\"#$%&'()*+,-./0123456789:;<=>?\n"
// ^^^ Fix this

但是管理与 \ 反斜杠和 " 引号字符混合的转义字符非常难以阅读和维护更改。

自最新标准 ( ) 起,您可以使用 raw character string literals :

#include <iostream>
#include <string>

int main() {
std::wstring ws(LR"del( !\"#$%&'()*+,-./0123456789:;<=>?)del" L"\n"
LR"del(@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_)del" L"\n"
LR"del(`abcdefghijklmnopqrstuvwxyz{|}~)del" L"\n");
std::wcout << ws;
return 0;
}

输出

 !\"#$%&'()*+,-./0123456789:;<=>?
@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
`abcdefghijklmnopqrstuvwxyz{|}~

没有必要转义,你看。

查看支持当前标准的编译器的工作示例 herehere

关于C++将wchar_t反斜杠插入字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24531854/

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