首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何正确移植Win-only函数GetMultiByteString?

如何正确移植Win-only函数GetMultiByteString?
EN

Stack Overflow用户
提问于 2010-07-26 20:03:31
回答 1查看 149关注 0票数 0

我将最初只支持Windows的代码移植到跨平台友好的代码中;一个特别的障碍是试图将对Windows Unicode函数"GetMultiByteString“(以及任何相关函数)的调用转换为更可移植的基于wchar的函数。我使用wchar的成功很少,因为在尝试迭代Unicode字符串时,使用wchar会导致循环提前终止。

使用wchar替换GetMultiByteString和任何其他相关Unicode函数的正确方式是什么?

EN

回答 1

Stack Overflow用户

发布于 2010-07-26 20:13:26

在这里,您正在尝试将苹果转换为橙子。MultiByteToWideChar和WideCharToMultiByte之间的转换特定的编码,UTF-16 <->各种其他编码,包括美国国家标准。

3个问题:

  1. C标准库中的char <-> wchar_t函数操作的编码是由实现定义的。它可以在UCS-2和ASCII、EBDIC或任何数量的其他代码页之间进行转换。您不能用这些函数替换windows函数,因为您不能假设wcstombs和mbstowcs实际上正在谈论UTF-16,或者实际上正在谈论ASCII。通常,它们在unix机器上实际使用的编码是UTF-32。
  2. unix机器通常不识别UTF-16 --它们都是基于UTF-8的,如果它们在unix机器上支持unicode,那么在unix机器上通常是4字节,而不是2字节,所以你必须检查你的所有代码,以确保它的大小从未被假定为2字节。

简而言之,除非您自己编写代码进行编码,否则没有完全可移植的方法来处理这类事情。

如果你想成为可移植的,你需要定义一个类型定义或者其他的东西,这样你的应用程序就可以在windows上使用wchar_t,而在其他所有东西上使用char。然后,您必须假设在Windows计算机上使用UTF-16,在unix计算机上使用UTF-8。

或者:你必须使用一个库,比如ICU。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3338551

复制
相关文章
如何正确提问?
地址https://www.mubucm.com/doc/KlGN2ZDFBl思维导图图片归档遇到问题先尝试搜索态度:不做伸手党开发者文档:不怕英文搜索引擎:只认谷歌相关社区 SegmentFault 前端的比较多 后端有不少优秀文章 极客极简风格 没啥广告 StackFlow 程序员进阶必备 不仅找问题,还能学知识再次思考和尝试组织你的提问问什么? 代码? 思路? 原理?标题 是否清晰
阿东
2022/11/26
1.4K0
如何正确提问?
qmake定义函数的正确写法
❝定义一个函数名字为function_name的正确写法。 ❞ 错误写法: defineReplace(function_name) { } 正确写法:(注意:{不能换行) defineReplace(function_name) { }
Qt君
2020/02/24
6070
【学术】如何在神经网络中选择正确的激活函数
在神经网络中,激活函数是必须选择的众多参数之一,以通过神经网络获得最优的成果和性能。 在这篇文章中,我将假设你已经理解了神经网络工作的基本原理,并将详细介绍涉及激活的过程。在前馈过程中,每个神经元取上一层取神经元的总和(乘以它们的连接权值)。例如: n5 = (n1 * w1) + (n2 * w2) + (n3 * w3) + (n4 * w4) n6 = (n1 * w5) + (n2 * w6) + (n3 * w7) + (n4 * w8) n7 = (n1 * w9) + (n2 * w10) +
AiTechYun
2018/03/02
8930
【学术】如何在神经网络中选择正确的激活函数
正确使用异步函数的姿势[每日前端夜话(0x06)]
在编写异步函数时,await 、 return与return await之间存在差异,选择正确的处理方式非常重要。
疯狂的技术宅
2019/03/27
1.4K0
正确使用异步函数的姿势[每日前端夜话(0x06)]
如何正确使用log
下面小编就为大家分享一篇使用log_format为Nginx服务器设置更详细的日志格式方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
习惯说一说
2019/07/04
2.3K0
如何正确激活Navicat
2.安装前首先关闭杀毒软件(如果之前安装过Navicat要先清理干净,包括注册表)如果不会清除请百度
taoli
2022/09/30
1.3K0
如何正确激活Navicat
[Java8]如何正确使用Optional
Optional是Java8提供的为了解决null安全问题的一个API。善用Optional可以使我们代码中很多繁琐、丑陋的设计变得十分优雅。这篇文章是建立在你对Optional的用法有一定了解的基础上的,如果你还不太了解Optional,可以先去看看相关教程,或者查阅Java文档。
KAAAsS
2022/01/14
7K0
如何正确激活Navicat
2.安装前首先关闭杀毒软件(如果之前安装过Navicat要先清理干净,包括注册表)如果不会清除请百度
taoli
2022/09/27
1.9K0
如何正确激活Navicat
如何正确的提问?
https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way指向 Github 的一个仓库:《How-To-Ask-Questions-The-Smart-Way》。
前端黑板报
2018/07/24
1.3K0
如何正确的提问?
Pytorch 0.3.0 发布:新增张量函数,支持模型移植
根据官方文档的介绍,此次增加了多个函数和功能,多方面的性能均实现提升。 重大变更 0.3 版本中删掉了 Variable.reinforce() 等随机函数,因为它们的功能有限,并且会影响到性能。设置随机函数的初衷是为了避免采样值的 book-keeping,在实际中,由于各种各样的原因,用户的代码中仍然会包括 book-keeping。他们引入了 torch.distributions 包来代替随机函数。 之前的代码如下: probs = policy_network(state) action = pr
BestSDK
2018/03/02
7840
如何写出优雅的 JS 代码,变量和函数的正确写法
在开发中,变量名,函数名一般要做到清晰明了,尽量做到看名字就能让人知道你的意图,所以变量和函数命名是挺重要,今天来看看如果较优雅的方式给变量和函数命名。
前端小智@大迁世界
2020/05/18
3.8K0
Linux移植之移植步骤
在这里总结一下我在移植Linux2.6.22.6内核过程时的步骤。移植成功后最终能挂接做好的根文件系统,并且启动第一个init程序。移植的步骤如下:
全栈程序员站长
2022/09/06
3.8K0
【Python环境】如何使用正确的姿势进行高效Python函数式编程?
关于函数式编程 有哪些函数式语言? 其实函数是语言很早就出现了,上世纪30年代出现的Lambda和50年代的LISP,比面向过程和对象的语言出现的更早,现代的Clojure,Erlang,Haskee
陆勤_数据人网
2018/02/26
1.5K0
【Python环境】如何使用正确的姿势进行高效Python函数式编程?
如何在linux系统上移植驱动?
在嵌入式linux上移植LCD(这里指彩色点阵式LCD)的驱动,通常说来,并不是很困难的事。最简单的方法,就是找到linux中,现有的LCD驱动的参数设置的代码,直接修改参数即可。复杂点的方法,就要添加LCD驱动相关的结构体,设备描述,等。但不管怎么样,LCD的参数设置是最终肯定要面对的问题。1075083208
7537367
2020/08/03
3.7K0
mysql中if函数的正确使用姿势
——为了今天要写的内容,运行了将近7个小时的程序,在数据库中存储了1千万条数据。——
Java旅途
2020/07/13
1.7K0
【C语言】getchar 函数的正确使用
也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区。
全栈程序员站长
2022/11/02
1.6K0
【C语言】getchar 函数的正确使用
Java函数调用重试的正确姿势
核心功能 提供重试工具类, 支持传入操作、重试次数和延时时间。 支持定义不再重试的异常和条件。
明明如月学长
2021/08/27
2.4K0
如何正确清理C盘?
Windows电脑操作系统一般是安装在磁盘驱动器的C盘中,一旦运行,便会产生许多垃圾文件,C盘空间在一定程度上都会越来越小。伴随着电脑工作的时间越久,C盘常常会提示显示其内存已不足。那么C盘容量不足对我们的电脑有什么影响?
大头猿
2022/10/27
15.9K0
Ai该如何正确焦虑
最近好像又开始了新一波的Ai焦虑,刚开始我会把这些现象归结为“公号文章看多了”,有些公号确实故意夸大Ai的本事,导致很多行业都在担心自己的工作会不会被Ai替代,进而产生的焦虑。
木羊
2023/09/09
1370
如何正确的使用VSCode
由与我们的Coding工作比较辛苦,现在推荐大家一款VS code插件,专注于高(hun)效(shui)工(mo)作(yu),能让你更加高效的上(hua)班(shui)!
我被狗咬了
2019/09/23
4.6K0
如何正确的使用VSCode

相似问题

如何正确地将此函数从PHP移植到Javascript

10

从OpenCV移植函数

21

如何正确地将此代码移植到Swift

20

移植Gfx_SetTransform函数

11

将此函数移植到RxJava

17
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文