VC中char和TCHAR的数据类型转换2013-06-02char:计算机编程语言(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 bufferWCHAR szW[100]; // Unicode string buffer// Normal sprintf:all strings are ANSIsprintf(szA, "%s","ANSI Str");// Converts Unicode string to ANSIsprintf(szA,"%S",L"Unicode Str");// Normal swprintf:all strings are Unicodeswprintf(szW,L"% s",L"Unicode Str");// Converts ANSI string to Unicodeswprintf(szW,L"%S", "ANSI Str");注意:大写S 和小 写s 的使用应用实例:通过system函数程序调用启动msc程序
void WSUS::OnBnClickedOk(){CString strPath = NULL; // 申请路径字符串(TCHAR)char strChar[256];// 申请路径字符串(char)m_CustomEdit.GetWindowTextW(strPath); // 获取路径存储到strPathstrPath.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程序}