gpt4 book ai didi

c++ - C/C++ : Inherent ambiguity of "\xNNN" format in literal strings

转载 作者:可可西里 更新时间:2023-11-01 17:32:12 25 4
gpt4 key购买 nike

考虑这两个字符串:

wchar_t* x = L"xy\x588xla";
wchar_t* y = L"xy\x588bla";

阅读本文后,您会认为两个字符串文字除了一个字符外是相同的 - 'x' 而不是 'b'
事实证明并非如此。第一个字符串编译为:

y = {'x', 'y', 0x588,  'x', 'l', 'a' }

第二个实际上是:

x = {'x', 'y', 0x588b, 'l', 'a' }

它们的长度甚至都不一样!
是的,'b' 被十六进制表示 ('\xNNN') 字符吃掉了。

至少,这可能会导致手写字符串的困惑和细微的错误(您可能会争辩说 unicode 字符串不属于代码主体)

但更严重的问题,也是我面临的问题,是自动生成的代码。似乎没有任何方法可以表达这一点:{'x', 'y', 0x588, 'b', 'l', 'a' } 作为文字字符串而不求助于以十六进制表示形式写入整个字符串,这是浪费且不可读的。

有什么办法解决这个问题吗?
这种行为在语言中有什么意义?

最佳答案

一个简单的方法是使用编译时字符串文字连接,因此:

wchar_t const* y = L"xy\x588" L"bla";

关于c++ - C/C++ : Inherent ambiguity of "\xNNN" format in literal strings,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15421722/

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