w2a与a2w

这篇博客介绍了如何使用ATL的W2A和A2W宏进行Unicode到ANSI字符串的转换,并展示了如何在C++中设置地域信息进行非英文字符的输出。此外,还讲解了在文本文件中写入转换后字符串的操作,涉及文件打开和fwrite函数的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在csdn上找到一个下载的unicode与ANSI字符串转换的


如下:

#include <atlbase.h>

代码如下:

//使用ATL的W2A和A2W宏必须使用USES_CONVERSION

USES_CONVERSION

//Unicode字符串

wchar_t * wszText=L"1.Unicode字符转换为ANSI;";

printf(”%s\n",W2A(wszText));

//用wprintf输入非英文字符,需要设置当前的地域信息

setlocale(LC_ALL,"chs");                          

//ANSI字符串(ANSI:American National Standards Institute)

//中文内码MBCS:Multi-Byte character sets,英文内码SBCS:Single-Byte character sets)

char* szText="2.ANSI字符转换成Unicode.";

wprintf(L"%s\n",A2W(szText));



自己是想转换后在一个txt里写

要多个头文件<locale.h>

#include<atlbase.h>

#include<locale.h>   //添加

FILE* fp1=NULL;
         fp1=fopen("F:\\mydlg.txt","w+");
         if(fp1==NULL)
         {
             MessageBoxW(NULL,(LPCWSTR)lpFileName,L"没打开写文件",MB_OK);
         }

USES_CONVERSION;
wchar_t* wszText=(unsigned short*)(LPCWSTR)lpFileName;   //
setlocale(LC_ALL,"chs");

fwrite(W2A(wszText),1,strlen(W2A(wszText)),fp1);


运行成功,结果成功






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值