`
jishublog
  • 浏览: 871437 次
文章分类
社区版块
存档分类
最新评论

VC char和TCHAR之间转换

阅读更多

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]; //ANSIstring buffer

WCHAR szW[100]; //Unicodestring 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. voidWSUS::OnBnClickedOk()
  2. {
  3. CStringstrPath=NULL;//申请路径字符串(TCHAR)
  4. charstrChar[256];//申请路径字符串(char)
  5. m_CustomEdit.GetWindowTextW(strPath);//获取路径存储到strPath
  6. strPath.Replace(_T("\\"),_T("\\\\"));//替换strPath中"\"为"\\",注意转换符
  7. //sprintf(strChar,"%s%S","mmc.exe",strPath);//TCHAR转换char类型
  8. sprintf(strChar,"mmc.exe\"%S\"",strPath);//TCHAR转换char类型
  9. MessageBox(strPath,_T("title"));
  10. system(strChar);//系统函数调用启动msc程序
  11. //WinExec((LPCSTR)_bstr_t(strPath),SW_SHOW);//调用exe程序
  12. }

示例步骤:

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.exeC:\\Windows\\System32\\gpedit.msc


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


4、启动结果如下






分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics