利用VS.net编程,进行字符串编码格式的各种转换代码


以下是在vs2013、字符集为unicode的配置下测试成功:

1.LPCSTR转化为CString:
LPCSTR  lpStr="test";
CString str(lpStr);

2.CString转化为LPCSTR:
CString str("test");
LPCSTR lpStr = (LPCSTR)str;


3.const char * 转换为LPCSTR:_T()


4.从CString得到const char *:
CString str("ABC");
const char *ch = (LPCSTR)(LPCTSTR)str;  LPCTSTR是把CString转CString指针,LPCSTR是把宽字符指针转单字节指针


5.从char *到CString:
char *str;
CString cstr(str);


6.格式化输出cstring长度的时候,要用_T把ANSI转换为宽字符,特别要注意:_T只能框住字符串,不能包含后面的参数
cstrTmp.Format(_T("uString length = %d"), uLen);
MessageBox(cstrTmp);


7.CString转std::string:
分两步:
1把cstring转为char数组
2根据char数组,构造自己的string(记得释放内存)
std::string CStringToSTDStr(const CString& theCStr)
{
    const int theCStrLen = theCStr.GetLength();
    char *buffer = (char*)malloc(sizeof(char)*(theCStrLen+1));
    memset((void*)buffer, 0, sizeof(buffer));
    WideCharToMultiByte(CP_UTF8, 0, static_cast(theCStr).GetBuffer(), theCStrLen, buffer, sizeof(char)*(theCStrLen+1), NULL, NULL);

    std::string STDStr(buffer);
    free((void*)buffer);
    return STDStr;
}


8.std::string转CString:
string str="abcde";
CString cstr(str.c_str());


9._T(str)

_T(str):_T只是一个强制类型转换的宏,并非一个编码转换函数,用于把ANSI转换为Unicode编码。

更多细节参见https://blog.csdn.net/GoForwardToStep/article/details/53079967



你可能感兴趣的:(VS.net开发)