前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >VC char和TCHAR之间转换

VC char和TCHAR之间转换

作者头像
阳光岛主
发布2019-02-19 16:16:13
1.8K0
发布2019-02-19 16:16:13
举报
文章被收录于专栏:米扑专栏

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

代码语言:javascript
复制
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、启动结果如下

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2012年07月27日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档