一个困扰我的问题:怎样从char型汉字字符串中得到wchar_t型的汉字。

ryuli 2003-07-16 11:16:26
如:char ch[]="一个问题";
我想得到wchar_t型的第二个汉字:wchar_t wch='个';
我尝试用过MultiByteToWideChar和AllocSysString
但我发现他们只对数字或者英文有效果。我想这两个函数只是把char字符串中的单个字符简单的扩充长度,八位变成十六位,高八位补上零。这样对占两字节的汉字是无效的。
所以我想请各位老鸟提供个思路:怎样从char型汉字字符串中得到wchar_t型的汉字。

...全文
102 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
fixopen 2003-07-16
  • 打赏
  • 举报
回复
char ch[] = "一些汉字";
wchar_t cch = 0;

for (int i = 0; i < sizeof(ch); ++i)
{
if (i % 2) //even
cch = ch[i] << 8 | ch[i + 1];
//cch = ch[i + 1] << 8 | ch[i];
}
ryuli 2003-07-16
  • 打赏
  • 举报
回复
谢谢DEVZHAO和BLUEBOHE兄,这个问题基本解决,现在看来也简单,纯粹数学问题。还是我平时缺少钻研精神,什么事就指望MSDN。

to:devzhao 你说的ch[0]*256+ch[1]如果改成(ch[0]+1)*256+ch[1]就对了,但仍非常感谢你提供的思路

个人以为宽字符主要是牵涉到汉字时使用。因为wchar_t或者USHORT等才可以完全表示一个汉字,都是16位。是不是很肤浅?呵呵,我是菜鸟
1cs1ak1 2003-07-16
  • 打赏
  • 举报
回复



ch=(*p)*255+*(p+1); //
应为这样吗?
(*p)<<8 | *(p+1)


ryuli 2003-07-16
  • 打赏
  • 举报
回复
谢谢,正在研究ing……
devzhao 2003-07-16
  • 打赏
  • 举报
回复
char ch[]="一个问题";
实际上是由ch[0]和ch[1]存“一”,即每个汉字两个字节
将ch[0]*256+ch[1]可变为16位,
1cs1ak1 2003-07-16
  • 打赏
  • 举报
回复



windows编程里讲过宽字符,不过一直都不以为然,没仔细看过。
到现在为止我还没用过宽字符,可能是水平不够吧。
楼主能否讲一下什么地方用到。


1cs1ak1 2003-07-16
  • 打赏
  • 举报
回复



windows编程里讲过宽字符,不过一直都不以为然,没仔细看过。
到现在为止我还没用过宽字符,可能是水平不够吧。
楼主能否讲一下什么地方用到。



bluebohe 2003-07-16
  • 打赏
  • 举报
回复
你研究一下这个程序拉,能够解决你的问题
int main(int argc, char* argv[])
{
char *str="abc一个问题def";
char *p=str,*p1;
unsigned short ch;
while(strcmp(p,"")!=0)
{
p1=CharNextExA(936,p,0);
int i=p1-p;
if(i==1)
{
ch=(unsigned char)*p;
}else if(i==2)
{
ch=(*p)*255+*(p+1);
}
p=p1;


}
return 0;
}

1cs1ak1 2003-07-16
  • 打赏
  • 举报
回复



windows编程里讲过宽字符,不过一直都不以为然,不知什么地方用得到。
好像到现在为止我还没用到,可能是鄙人水平不够吧。
搂主能否讲讲他的用处。



bluebohe 2003-07-16
  • 打赏
  • 举报
回复
呵呵,这可是我经过了三年的文字编程,最后从公司辞职后呆在家里才总结出来的。
我的MSN是gazxtzg@hotmail.com,我上班的时间一般都在线的
ryuli 2003-07-16
  • 打赏
  • 举报
回复
邮箱,jjryu@163.net,QQ 14272692,愿和所有志同道合者交朋友
ryuli 2003-07-16
  • 打赏
  • 举报
回复
严重感谢薄荷兄给我的例子程序!!!薄荷兄告诉我你的邮箱或者QQ,交我这个菜鸟朋友吧
内容概要:本文系统阐述了基于线性与非线性状态空间模预测控制(MPC)的四旋翼无人机轨迹跟踪对比仿真研究,包含完整的Simulink仿真模、详细的技术讲解与说明文档,属于硕士论文级别的复现阶段。研究围绕四旋翼飞行器的动力学建模展开,分别构建线性MPC与非线性MPC控制器,深入比较两者在复杂轨迹跟踪任务的控制性能差异,重点评估其在轨迹精度、动态响应速度、系统稳定性及抗干扰能力等方面的表现。文提供了从状态方程推导、约束条件设定、代价函数设计到仿真结果分析的全流程实现细节,有助于读者全面掌握MPC在高阶非线性系统的应用机制与工程实现方法。; 适合人群:具备自动控制原理、现代控制理论(特别是状态空间方法)、非线性系统建模及MATLAB/Simulink仿真能力的研究生、科研人员,以及从事无人机飞控系统开发、先进控制算法研究的工程技术人员。; 使用场景及目标:① 学习并掌握线性与非线性MPC在四旋翼系统的建模与控制器设计方法;② 对比分析两种MPC策略在实际轨迹跟踪的性能优劣,理解其适用边界与局限性;③ 支持硕士论文复现、科研项目验证、控制算法优化与教学案例开发。; 阅读建议:建议结合所提供的完整仿真模逐步操作,重点理解系统线性化处理方法、预测时域与控制时域的设置、状态与输入约束的处理机制,以及非线性MPC的实时优化求解过程。同时推荐配合经典控制理论教材与MPC专著进行延伸学习,以实现从理论推导到仿真验证的闭环掌握。

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧