VC++中char和TCHAR之间转换

2018-06-17 23:58:06来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

char:计算机编程语言(c、c++、java等)中可容纳单个字符的一种基本数据类型。

TCHAR:为了满足Unicode编码,对char的扩展,即_T(“str”)表示TCHAR类型

C++支持两种字符串,即常规的ANSI编码(使用""包裹)和Unicode编码(使用L""包裹),这样对应的就有了两套字符串字符串处理函数,比如:strlen和wcslen,分别用于处理两种字符串char和TCHAR类型

 

winnt.h头文件中:

     typedef WCHAR TCHAR, *PTCHAR; 

表明 TCHAR 与 WCHAR 属同一类型

 

char szA[100];                    // ANSI string buffer
WCHAR szW[100];            // Unicode string buffer

// Normal sprintf: all strings are ANSI
sprintf(szA, "%s","ANSI Str");

// Converts Unicode string to ANSI
sprintf(szA,"%S",L"Unicode Str");

// Normal swprintf: all strings are Unicode
swprintf(szW,L"%s",L"Unicode Str");

// Converts ANSI string to Unicode
swprintf(szW,L"%S", "ANSI Str");

注意:大写S 和小写s 的使用

 ===========================

 

 应用实例:通过system函数程序调用启动msc程序

 

void WSUS::OnBnClickedOk()  
{  
    CString strPath = NULL;    // 申请路径字符串(TCHAR)  
    char strChar[256];           // 申请路径字符串(char)  
  
    m_CustomEdit.GetWindowTextW(strPath);   // 获取路径存储到strPath  
  
    strPath.Replace(_T("\\"), _T("\\\\"));  // 替换strPath中"\"为"\\",注意转换符  
    //sprintf(strChar, "%s %S", "mmc.exe", strPath);        // TCHAR转换char类型  
    sprintf(strChar, "mmc.exe \"%S\"", strPath);        // TCHAR转换char类型  
  
    MessageBox(strPath, _T("title"));  
    system(strChar);                        // 系统函数调用启动msc程序  
              
    //WinExec((LPCSTR)_bstr_t(strPath), SW_SHOW);   // 调用exe程序  
}  

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:智能指针 auto_ptr、scoped_ptr、shared_ptr、weak_ptr

下一篇:(转)OpenCV提取视频每一帧及将连续图片合成视频