现在的位置: 首页 > 综合 > 正文

VC char和TCHAR之间转换

2013年04月12日 ⁄ 综合 ⁄ 共 1590字 ⁄ 字号 评论关闭

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

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程序

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


示例步骤:

1、获取msc程序路径strPath


2、替换strPath中"\"为"\\"字符

C:\Windows\System32\gpedit.msc

首先,通过 strPath.Replace(_T("\\"), _T("\\\\")); 转换成:

C:\\Windows\\System32\\gpedit.msc

然后,通过 sprintf(strChar, "%s %S", "mmc.exe", strPath); 拼接字符串为:

mmc.exe C:\\Windows\\System32\\gpedit.msc

3、system函数调用启动msc程序
system(strChar);

4、启动结果如下

抱歉!评论已关闭.