问题标签 [string-literals]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 这个 boost c++ 正则表达式代码有什么问题?
包括
我需要/
从Disallow: /
我的正则表达式有什么问题中获取不允许的路径?
c++ - 结合字符串文字和整数常量
给定一个编译时常量整数(一个对象,而不是宏),我可以在编译时将它与字符串文字结合起来,可能与预处理器结合使用吗?
例如,我可以通过将它们彼此相邻来连接字符串文字:
伟大的!但是如果我在混合中添加整数常量怎么办:
是否可以使用预处理器以某种方式将其与字符串文字连接起来?
如果那不可能,我可以将常量字符串与字符串文字混合吗?即如果我的错误代码是字符串,而不是无符号?
如果两者都不可能,那么将这种字符串文字和数字错误代码组合在一起的最短、最干净的方法是什么?
c - C中的字符串常量和字符串文字有什么区别?
纯C中的字符串常量和字符串文字有什么区别?
这个问题与另一个类似:字符串常量和字符串文字有什么区别?...除了一个是关于 Objective-C(使用 NSString)而不是 C 的。
java - 调用时私有静态方法中的最终字符串是否会实例化一个新对象?
调用时私有静态方法中的静态最终字符串是否会实例化一个新对象?
或者编译器是否知道方法内部只有一个字符串文字?还是应该将其设为私有静态最终类字段?这会通过在类中散布代码来降低可读性。
c# - 区分字符串文字和字符串 C#
我想做类似的事情
具有明显的回报价值。可能吗?
c++ - c++:从模板参数生成字符串文字
其中 ...
是“0 1 2 ... i-1”,例如“0 1 2 3 4”代表i == 5
.
这可能吗?(请不要在运行时执行此操作!)
- 出于好奇而提出的问题(使用预处理器宏/常量很容易,但是模板参数怎么样)?
- 含义是:编译时生成的字符串字面量。我现在看到这
const
并不强制,但可以使用任何运行时评估函数来生成字符串。
javascript - JavaScript 字符串中的转义 html 中未终止的字符串文字
在编码此值时,我看到一些 javascript 字符串文字存在问题:
未编码
我最终得到这个值:
解码
当在某些 javascript 代码中用作 javascript 文字时,Firefox 抱怨它未终止 - 但我自己不明白为什么。
奇怪的是,如果我</script>
从上面的 html 中删除“”结束标记,编码版本可以正常工作,如下所示:
未编码
编码
此编码值有效...
有人知道我错过了什么吗?
更新
现在似乎很明显,我责怪睡眠不足,在这种情况下,应用程序依赖于较旧版本的 JSON.Net 来编码 javascript - 所以我通过为字符串引入一个新的 JsonConverter 来解决这个问题,它处理转义关闭在应用了 JavaScript 转义后的第二遍标记。
c++ - U+ 到底代表什么,为什么我不能在我的 C++ 应用程序中创建一个 Unicode 中间字符串表?
我正在尝试将应用程序从 Java + Swing 转换为 C++ + Qt。在某一时刻,我不得不处理一些 Unicode 中间体。在 Java 中,这相当容易:
...而在 C++ 中我遇到了问题:
我不能在 VS2008 中使用 \u 因为我收到了一堆形式的警告:
由通用字符名称“\u3042”表示的字符无法在当前代码页中表示 (1250)
而且不要说我愚蠢,我尝试使用 File->Advanced Save Options 无济于事,代码页似乎根本没有改变。似乎这是一个已知问题:How to create a UTF-8 string literal in Visual C++ 2008
我使用的表格很短,所以在 Vim 和一些入门级的正则表达式魔术的帮助下,我能够将它转换为\x30\x42表示法。不幸的是,QStrings 不会从这样的输入正确初始化。我什么都试过了。fromAscii(), fromUtf8(), fromLocal8Bit(), QString(QByteArray), 作品。然后,尝试将没有 BOM 的 U+3042 写入文件,然后以十六进制模式查看,我发现它实际上是"E3 81 82"。突然,像这样的条目似乎可以与QString::fromAscii()一起使用. 现在我想知道“U+3042”中的“U+”到底代表多少(因为 0xE38182 - 0x3042 = E35140,也许我最好将这个魔术常数添加到我所有可能的 Unicode 字符中?)。我应该如何从这里开始获取正确的 UTF-8 字符串数组?
java - 了解字符串文字池的示例
根据这篇文章ScjpTipLine-StringsLiterally我正在编写一些示例,例如:
输出是预期的:
但是如果您稍微更改上面的代码替换该行
和
你得到
这是一个意外的输出,因为new String("someString"); JVM 必须在运行时在堆上创建一个新的 String 对象,而不是使用字符串字面量池中的literalString1 和literalString2。
提前致谢
c++ - 冲突:在 C++ 标准和 Windows 实现中定义 wchar_t 字符串?
从 c++2003 2.13
宽字符串文字的类型为“<strong>array of n const wchar_t”并具有静态存储持续时间,其中 n 是字符串的大小,定义如下
宽字符串文字的大小是转义序列、通用字符名称和其他字符的总数,加上终止 L'\0' 的数量。
从 c++0x 2.14.5
宽字符串文字的类型为“<strong>array of n const wchar_t”,其中 n 是字符串的大小,定义如下
char32_t 或宽字符串文字的大小是转义序列、通用字符名称和其他字符的总数,加上终止 U'\0' 或 L'\0' 的数量。
char16_t 字符串文字的大小是转义序列、通用字符名称和其他字符的总数,每个需要代理对的字符加一个,终止 u'\0' 加一个。
C++2003 中的声明相当模糊。但在 C++0x 中,计算字符串长度时,宽字符串字面量 wchar_t 应与 char32_t 相同,与 char16_t 不同。
在https://stackoverflow.com/questions/402283?tab=votes%23tab-top中有一篇文章清楚地说明了 windows 如何实现 wchar_t
简而言之,windows 中的 wchar_t 是 16 位,使用 UTF-16 编码。标准中的声明显然在 Windows 中留下了一些冲突的东西。
例如,
这超过了 16 位,对于 UTF-16,它需要两个 16 位来对其进行编码(代理对)。
但是,根据标准,kk 是 2 个 wchar_t 的数组(1 代表通用名称 \U000E005,1 代表 \0)。
但在内部存储中,Windows 需要 3 个 16 位 wchar_t 对象来存储它,2 个 wchar_t 用于代理对,1 个 wchar_t 用于 \0。因此,从数组的定义来看,kk 是一个包含 3 个 wchar_t 的数组。
这显然是相互矛盾的。
我认为 Windows 的一个最简单的解决方案是“禁止”任何需要 wchar_t 中的代理对的东西(“禁止”BMP 之外的任何 unicode)。
我的理解有什么问题吗?
谢谢。