COleVariant在多字节字符集下的坑

COleVariant在多字节字符集下的坑以下代码(多字节字符集下):COleVariantvar=CStringA("123开始唱");CStringAstr=V_BSTRT(&var);你会发现,str=="123",中文呢?看下COleVariant的构造函数发现:constCOleVariant&COleVariant::operator=(constLPCTSTRlpszSrc){ …

大家好,又见面了,我是你们的朋友全栈君。

以下代码(多字节字符集下):

COleVariant var = CStringA("123开始唱");
CStringA str = V_BSTRT(&var);

你会发现,str == “123”,抓狂中文呢?看下COleVariant的构造函数发现:

const COleVariant& COleVariant::operator=(const LPCTSTR lpszSrc)
{
	// Free up previous VARIANT
	Clear();

	vt = VT_BSTR;
	if (lpszSrc == NULL)
		bstrVal = NULL;
	else
	{
		bstrVal = CTempStringW(lpszSrc).AllocSysString();
	}
	return *this;
}

看到没?无论你传ansi或unicode的源字符串进去,最终都被作为unicode存储,在取出来的时候,当然取得的是unicode的字符串,当使用CStringA str = V_BSTRT(&var);去接时,前面的“123”能拿到的,当后面的中文被去掉了。

改下以下去接就正常了:

COleVariant var = CStringA("123开始唱");
CStringW wstr = (wchar_t*)var.bstrVal;
CStringA str = 把unicodz转ansi(wstr)...

这样就可以正常接了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/161078.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Autoconf 详解[通俗易懂]

    Autoconf 详解[通俗易懂]AutoconfCreatingAutomaticConfigurationScriptsEdition2.13,forAutoconfversion2.13December1998byDavidMacKenzieandBenElliston目录介绍创建configure脚本编写`configure.in用autoscan创建`configure.in用if

    2022年5月4日
    37
  • Vagrant-安装教程及常见问题

    Vagrant-安装教程及常见问题

    2021年10月28日
    67
  • Linux上安装JDK

    Linux上安装JDK1 在安装前 需要先关掉 linux 的防火墙查看防火墙状态命令 systemctlsta service2 关闭防火墙 systemctlsto service3 再次查看防火墙 4 切换到 root 用户并输入相应的密码 不然会提示用户权限不够 suroot5 在 usr local 中创建 java 目录 mkdir usr local java6 使用 filezilla 工具连接 linux 主机 IP

    2025年8月2日
    3
  • 一只救助犬的最后遗言

    一只救助犬的最后遗言这是刚在雅虎上看到的一篇文章,内容讲述一只日本救助犬的真实而动人的故事,阅后不得不让人感叹人与动物之间的感情和谐与真挚。实话说,其令我这个大男人哽咽难语。想想现今,在这个人与人之间充满了不信任,在这

    2022年7月4日
    31
  • Linux 审计日志记录,linux日志服务器审计客户端history记录「建议收藏」

    Linux 审计日志记录,linux日志服务器审计客户端history记录「建议收藏」需求将每台服务器上的每一个用户执行的命令、执行时间、登陆时间、主机ip、当前切换用户等信息保存到本地并实时传输至日志服务器进行异地保存。nginxIPhostname角色10.10.99.1test1rsyslog-server10.10.99.2test2rsyslog-client工具及服务1.loggerlogger是一个shell接口,能够经过该接口使用rsyslog的日志模块。webus…

    2022年6月4日
    79
  • 如何使用等价类划分法编写测试用例的结果_划分等价类设计测试用例

    如何使用等价类划分法编写测试用例的结果_划分等价类设计测试用例案例:如下图所示的一个两位整数加法器,需求分析中要求:①第一个数和第二个数都是只能输入-99到99之间的整数②对于输入的小于-99的数据或者大于99的数据,程序应给出明确提示③对于输入的小数、字符等非法数据,程序应给出明确提示基于上述需求,使用等价类划分法编写测试用例的步骤如下:1.根据需求分析,建立等价类表(1)有效等价类表编号数据要求1-99——0之间的整…

    2022年10月17日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号