VC char和TCHAR之间转换

本文详细介绍了C++中TCHAR类型的使用,包括其与char的区别,如何在不同编码间转换字符串,以及如何通过system函数调用启动外部程序。重点展示了通过将路径字符串从ANSI编码转换为Unicode编码,再进行系统调用实现外部程序的启动。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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程序
[cpp]
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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值