unicode与ascii字符转换

多字节转宽字节

// 使用完成后, 需要手动调用free函数释放内存
wchar_t* MToW(char* pstr, UINT nCodePage=CP_ACP)
{
    // 获取转换后所需要的内存大小
    int nstrLen = MultiByteToWideChar(nCodePage, 0, pstr, strlen(pstr), NULL, 0);
    // 申请内存
    wchar_t* pwszstr = (wchar_t*)malloc(sizeof(wchar_t)*(nstrLen + 1));
    // 清空内存
    ZeroMemory(pwszstr, sizeof(wchar_t)*(nstrLen + 1));
    // 进行转换
    nstrLen = MultiByteToWideChar(nCodePage, 0, pstr, strlen(pstr), pwszstr, nstrLen);
    // 字符串结尾
    pwszstr[nstrLen] = 0;
    return pwszstr;

}

USES_CONVERSION;/A2W
CA2W

宽字节转多字节

// 使用完成后, 需要手动调用free函数释放内存
char* WToM(const CString& str,UINT nCodePage=CP_ACP)
{
    // 转换后所需要的内存大小
    int nstrLen = WideCharToMultiByte(nCodePage, 0, str, wcslen(str), NULL, 0, NULL, NULL);
    // 申请内存空间
    char* pmstr = (char*)malloc(sizeof(char)*(nstrLen + 1));
    // 清空内存
    ZeroMemory(pmstr, sizeof(char)*(nstrLen + 1));
    // 转换字符串
    nstrLen = WideCharToMultiByte(nCodePage, 0, str, wcslen(str), pmstr, nstrLen, NULL, NULL);
    // 添加结尾
    pmstr[nstrLen] = 0;
    return pmstr;
}

USES_CONVERSION;/W2A
CW2A

windows下socket初始化

在windows平台用C/C++语言创建socket通信之前需要进行初始化,才能创建socket
头文件以及静态库

#include  // 引入Socket头文件
#pragma comment(lib,"ws2_32.lib")// 导入Socket库  

初始化代码

// 初始化Socket库
WSADATA wsa = {0}; // 用于保存Socket的信息
WSAStartup(MAKEWORD(2,2),&wsa);//函数初始化Socket库(Socket库的版本号 [Out]Socket的信息)

string 大小写转换 后缀名提取

// 转换为小写
transform(suffixStr.begin(), suffixStr.end(), suffixStr.begin(), tolower);
// 转换为大写
transform(suffixStr.begin(), suffixStr.end(), suffixStr.begin(), toupper);
wstring GetSuffix(wstring& filename)
{
    int nPos = filename.find_last_of(L'.');
    wstring suffixStr = L"";
    if (nPos != -1)
    {
        suffixStr = filename.substr(nPos);
        
        // 转换为小写
        transform(suffixStr.begin(), suffixStr.end(), suffixStr.begin(), tolower);
    }
        
    return suffixStr;
}