WCHAR的简单操作

WCHAR 是双字节类型,一般它用来存储那些双字节而不是单字节字符.较长的字节数可以支持

在应用程序的国际发布版本里所使用的扩展字符集(如常用的Unicode字符集).
    比如说:在中文系统下开发的软件,当应用到日文操作系统时,如果没有采用Unicode模式,那
么程序是无法正常运行的;或者反过来也是一样的,对于中文字符,或是日文字符,如果采用单字节
存储,将会显示乱码,此时只有采用双字节来实现正常存贮。
---------------------------------------------------------------------------
                    ============Sample============
  WCHAR   wchTest01[256] = {0};
  WCHAR   wchTest02[256] = {0};
  size_t     nLen = 0;
 
  //内存拷贝
  nLen = wcslen( wchTest02 );
  wmemcpy( wchTest01, wchTest02, nLen*2 );
 
  //追加字符
  nLen = wcslen( wchTest01);
  wcscat_s( wchTest01, nLen*2, _T("123456") );
---------------------------------------------------------------------------
  ※ 注意,由于是双字节类型,所以sizeof()的返回值是原来的2倍,如果wmemcpy()
  的参数传入sizeof(wchTest02),那么将会发生内存溢出,导致意外的错误。
  不过,双字节操作起来还真是麻烦啊...  困惑
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用VS Code时,出现 `cannot convert TCHAR* {aka char*} to const wchar_t*` 错误,这是因为在编译过程中涉及到了字符编码的转换问题。TCHAR是一种根据字符集定义的宏,根据不同的配置,它可以表示char类型或wchar_t类型。 对于此错误,可能是由于将一个TCHAR*(char*)类型的变量传递给一个期望接收const wchar_t*类型参数的函数或方法导致的。解决这个问题的方法之一是进行显示的字符编码转换。 你可以使用`MultiByteToWideChar`函数将char*类型的字符串转换为wchar_t*类型。这个函数可以在Windows API中找到,它可以将多字节字符转换为宽字符。以下是一个简单的示例代码: ```cpp #include <windows.h> wchar_t* ConvertToWideChar(const char* str) { int bufferSize = MultiByteToWideChar(CP_UTF8, 0, str, -1, NULL, 0); wchar_t* wideCharStr = new wchar_t[bufferSize]; MultiByteToWideChar(CP_UTF8, 0, str, -1, wideCharStr, bufferSize); return wideCharStr; } int main() { const char* narrowStr = "Hello, World!"; wchar_t* wideStr = ConvertToWideChar(narrowStr); // 使用wideStr进行操作 delete[] wideStr; return 0; } ``` 在这个示例中,`ConvertToWideChar`函数将一个char*类型的字符串转换为wchar_t*类型的字符串,并返回转换后的宽字符字符串。你可以将此宽字符字符串传递给接受const wchar_t*类型参数的函数。 希望这个解决方案对你有帮助!如果你有任何其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值