zoukankan      html  css  js  c++  java
  • wchar_t*,wchar_t,wchat_t数组,char,char*,char数组,std::string,std::wstring,CString 以及system("command")

    转载:http://blog.csdn.net/chocolateconanlan/article/details/4058868

    wchar_t*,wchar_t,wchat_t数组,char,char*,char数组,std::string,std::wstring,CString….

    一些转换函数,主要针对宽字符。字符串是根本啊,要好好掌握了


    #include <string>
    // 使用CString必须使用MFC,并且不可包含<windows.h>
    #define _AFXDLL
    #include <afx.h>
    using namespace std;
    //———————————————————————————-
    //将 单字节char* 转换为 宽字节 wchar*
    inline wchar_t* AnsiToUnicode( const char* szStr )
    {
    int nLen = MultiByteToWideChar( CP_ACP, MB_PRECOMPOSED, szStr, -1, NULL, 0 );
    if (nLen == 0)
    {
       return NULL;
    }
    wchar_t* pResult = new wchar_t[nLen];
    MultiByteToWideChar( CP_ACP, MB_PRECOMPOSED, szStr, -1, pResult, nLen );
    return pResult;
    }
    //———————————————————————————-
    // 将 宽字节wchar_t* 转换 单字节char*
    inline char* UnicodeToAnsi( const wchar_t* szStr )
    {
    int nLen = WideCharToMultiByte( CP_ACP, 0, szStr, -1, NULL, 0, NULL, NULL );
    if (nLen == 0)
    {
       return NULL;
    }
    char* pResult = new char[nLen];
    WideCharToMultiByte( CP_ACP, 0, szStr, -1, pResult, nLen, NULL, NULL );
    return pResult;
    }
    //———————————————————————————-
    // 将单字符 string 转换为宽字符 wstring
    inline void Ascii2WideString( const std::string& szStr, std::wstring& wszStr )
    {
    int nLength = MultiByteToWideChar( CP_ACP, 0, szStr.c_str(), -1, NULL, NULL );
    wszStr.resize(nLength);
    LPWSTR lpwszStr = new wchar_t[nLength];
    MultiByteToWideChar( CP_ACP, 0, szStr.c_str(), -1, lpwszStr, nLength );
    wszStr = lpwszStr;
    delete [] lpwszStr;
    }
    //———————————————————————————-
    int _tmain(int argc, _TCHAR* argv[])
    {
    char*   pChar = “我喜欢char”;
    wchar_t* pWideChar = L”我讨厌wchar_t”;
    wchar_t   tagWideCharList[100] ;
    char   ch = ‘A’;
    char   tagChar[100] = {NULL};
    CString   cStr;
    std::string str;

    // 注:设置语言环境以便输出WideChar
    setlocale(LC_ALL,”chs”);

    // 注: char* 转换 wchar_t*
    // 注: wchar_t 未重载 << ,所以不可使用 cout << 输出
    pWideChar = AnsiToUnicode( pChar );
    // 注:printf(”%ls”) 和 wprintf(L”%s”) 一致
    printf( “%ls/n”, pWideChar );

    // 注:wchar_t* 转换 wchar_t[]
    wcscpy ( tagWideCharList, pWideChar );
    wprintf( L”%s/n”, tagWideCharList );

    // 注:wchar_t[] 转换 wchar_t*
    pWideChar = tagWideCharList;
    wprintf( L”%s/n”, pWideChar );

    // 注:char 转换 string
    str.insert( str.begin(), ch );
    cout << str << endl;

    // 注:wchar_t* 转换 string
    pWideChar = new wchar_t[str.length()];
    swprintf( pWideChar, L”%s”, str.c_str());
    wprintf( L”%s/n”, pWideChar );

    // 注:string 转换 char*
    pChar = const_cast<char*>(str.c_str());
    cout << pChar << endl;

    // 注:char* 转换 string
    str = std::string(pChar);
    // 注: cout 的 << 重载了string, 若printf 的话必须 printf(”%s”, str.c_str());
    //   而不可 print( “%s”, str ); 因为 str 是个 string 类
    cout << str << endl;

    // 注:string 转换 char[]
    str = “无聊啊无聊”;
    strcpy( tagChar, str.c_str() );
    printf( “%s/n”, tagChar );

    // 注:string 转换 CString;
    cStr = str.c_str();

    // 注:CString 转换 string
    str = string(cStr.GetBuffer(cStr.GetLength()));

    // 注:char* 转换 CString
    cStr = pChar;

    // 注:CString 转换 char*
    pChar = cStr.GetBuffer( cStr.GetLength() );

    // 注:CString 转换 char[]
    strncpy( tagChar, (LPCTSTR)CString, sizeof(tagChar));

    // 注:CString 转换 wchar_t*
    pWideChar = cStr.AllocSysString();
    printf( “%ls/n”, pWideChar );
    }

  • 相关阅读:
    To select the file to upload we can use the standard HTML input control of type
    Cascading Menu Script using Javascript Explained
    网站首页head区代码规范
    轻松掌握 Java 泛型
    JDK 5.0 中的泛型类型学习
    如何在firefox下获取下列框选中option的text
    是同步方法还是 synchronized 代码? 详解多线程同步规则
    javascript select option对象总结
    Select的动态取值(Text,value),添加,删除。兼容IE,FireFox
    javascript在ie和firefox下的一些差异
  • 原文地址:https://www.cnblogs.com/fuyanwen/p/3200886.html
Copyright © 2011-2022 走看看