- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将几个 CStringW 字符串转换为 CStringA 字符串。其中一个字符串(我们称之为 otherLangString)是其他语言(中文、阿拉伯语等)。像这样使用时,所有其他字符串都没有问题转换:
CW2A((LPCWSTR)some_String);
但是当用于 otherLangString 时,我得到的是“??????”所以为了解决这个问题,我做了这个并且成功了
CW2A(some_String, CP_UTF8);
现在在代码中,除了一个看起来像第二个示例之外,所有转换看起来都像第一个示例。
为了保持一致性,我混合了以上两个,并为所有人都做了这个。
CW2A((LPCWSTR)some_String, CP_UTF8);
我的问题是, following 和 following 之间有什么区别?
- CW2A((LPCWSTR)some_String, CP_UTF8) and CW2A(some_String, CP_UTF8);
- CW2A((LPCWSTR)some_String) and CW2A(some_String, CP_UTF8);
最佳答案
CW2A
是 CW2AEX<>
的类型定义,它的c'tor是documented .使用 2 个参数的 c'tor 允许您显式指定用于转换的代码页:
nCodePage:
The code page used to perform the conversion. See the code page parameter discussion for the Windows SDK function MultiByteToWideChar for more details.
如果您不指定代码页,则使用当前线程的 ANSI 代码页进行转换(您很少需要那样)。这在 ATL and MFC String Conversion Macros 下进行了解释:
By default, the ATL conversion classes and macros will use the current thread's ANSI code page for the conversion. If you want to override that behavior for a specific conversion using macros based on the classes CA2WEX or CW2AEX, specify the code page as the second parameter to the constructor for the class.
在你的情况下,
CW2A((LPCWSTR)some_String);
使用线程的当前 ANSI 代码页从 UTF-16 转换为窄字符串。只有在使用相同的 ANSI 代码页进行解释时,结果才有意义。更糟糕的是,ANSI 代码页编码的字符串不能表示所有 Unicode 字符。
另一段代码
CW2A(some_String, CP_UTF8);
从 UTF-16 转换为 UTF-8。这通常是有利的,因为转换是无损且明确的。两种编码都可以表示同一组字符。编码后的字符串可以由任何能够解释 UTF-8 的阅读器解码。
CStringA
中的UTF-8 编码字符串。在 Windows 中。通过网络发送内容或将它们写入磁盘是安全的。但是如果你想将它传递给 Windows API(例如用于显示),你必须先转换为 UTF-16。 Windows API 的 ANSI 版本不支持 UTF-8。
关于c++ - CW2A(LPCWSTR)str) 和 CW2A(LPCWSTR)str, CP_UTF8) 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39398621/
你信吗?我有一个这样的循环(请原谅任何错误,我不得不大量编辑大量信息和变量名称,相信我它有效)。 ...旧示例已删除,请参见下面的代码... 如果我将那些中间的 str = "Blah\(odat.c
我正在做一个本地测试来比较 C# 中 String 和 StringBuilder 的 Replace 操作性能,但是对于 String 我使用了以下代码: String str = "String
我想知道为什么str += "A"和 str = str + "A"有不同的表现。 在实践中, string str = "cool" for(int i = 0; i approximately
我有一个类型列表 [("['106.52.116.101']", 1), ("['45.136.108.85']", 1)] 并想将其转换为 [('106.52.116.101', 1), ('45.
我有一个类型列表 [("['106.52.116.101']", 1), ("['45.136.108.85']", 1)] 并想将其转换为 [('106.52.116.101', 1), ('45.
我正在遍历 HashMap并通过一些本地变量中的模式匹配将值放入其中。 委托(delegate)者 fn lyrics_no_bottles(song_template:&mut String){
如果字符串(短语)中只有元音,它(对我而言)说True;否则说 False。我不明白为什么它总是返回 False,因为 (x >= x) 总是返回 True。我感谢任何人检查此查询的解决方案。 (st
我有代码以某种方式转换字符串引用,例如取第一个字母 trait Tr { fn trim_indent(self) -> Self; } impl Tr for &'a str { f
我正在学习指针,这是我的代码。我定义了一个指向 char(实际上是字符串)的指针 *str 和一个指向 int *a 的指针,它们的定义方式相同。我认为 str 和 a 都应该是一个地址,但是当我试图
为什么我会收到错误消息?我已经正确添加了类型,对吗? Invalid index type "str" for "Union[str, Dict[str, str]]"; expected type
你知道下面两个函数是否等价吗? function validate(str) { return ( ['null','','undefined'].indexOf(str) [v, valida
我正在解决这里的 Dataquest 问题:https://app.dataquest.io/m/293/data-cleaning-basics/5/removing-non-digit-chara
我有一个字符串列表,如下所示: ["A TB", "A-R TB", "B TB", "B-R TB", "C TB", "C-R TB"...] 但字符串的顺序是随机的。我如何编写一个将元素配对的函
我正在尝试将此函数从使用 split 改为使用 str.extract (正则表达式)。 def bull_lev(x): spl = x.rsplit(None, 2)[-2].strip(
给定这样的数据结构: [{'a':1, 'b': 2}, {'c':3 }, {'a':4, 'c':9}, {'d':0}, {'d': 0, 'b':6}] 目标是解析数据以产生: {'a': 2
给定这样的数据结构: [{'a':1, 'b': 2}, {'c':3 }, {'a':4, 'c':9}, {'d':0}, {'d': 0, 'b':6}] 目标是解析数据以产生: {'a': 2
s = 'someString' s = QTreeWidgetItem(s) print(s.text(0)) # 0 being 'column' 输出: 's' 如果我对另一
黑白有什么区别: function(char* str ) function(char* str[] ) function(char str[] ) 它们是如何被调用的(通过什么类型的string/c
我试过谷歌搜索但找不到准确的答案,所以请允许我尝试在这里提问。如果问题看起来不合适,请告诉我,我会删除它。 在 JS 中,您可以通过三种不同的方式编写特定的内置功能: 字符串长度 str.toStri
我有这段代码(我的 strlen 函数) size_t slen(const char *str) { size_t len = 0; while (*str) {
我是一名优秀的程序员,十分优秀!