VCchar和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]; //
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程序 }
示例步骤:
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、启动结果如下
原文: VCchar和TCHAR之间转换
版权所有: 本文系米扑博客原创、转载、摘录,或修订后发表,最后更新于 2012-07-27 15:53:26
侵权处理: 本个人博客,不盈利,若侵犯了您的作品权,请联系博主删除,莫恶意,索钱财,感谢!
转载注明: VCchar和TCHAR之间转换 (米扑博客)