C++宽字节与多字节的转换

在Windows上编写代码的时候,都应该使用Unicode,但是往往在项目中,总会遇到一些 不方便的地方,例如,读写磁盘,加密等等。因此,以下给出2个函数,用于多字节与宽自己的转换,主要使用Windows提供的 WideCharToMultiByte与MultiByteToWideChar函数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 将Unicode字符串转换为Ansicode字符串
void ConvertUnicodeToAnsi(wchar_t* source, char* dest)
{
    int len = 0;
    len = WideCharToMultiByte(CP_ACP, 0, source, -1, NULL, 0, NULL, NULL);
    WideCharToMultiByte(CP_ACP, 0, source, -1, dest, len, NULL, NULL);  
}
 
// 将Ansicode字符串转换为Unicode字符串
void ConvertAnsiToUnicode(char* source, wchar_t* dest)
{
    int len = 0;
    len = MultiByteToWideChar(CP_ACP, 0, source, -1, NULL, 0);
    MultiByteToWideChar(CP_ACP, 0, source, -1, dest, len);
}

尽管互联网上到处都是,不过还是自己写的代码比较熟悉,也可以省去搜索的时间。

原文地址:https://www.cnblogs.com/UnGeek/p/2972164.html