Visual C++中的TCHAR

为了使代码兼容ASCII码和Unicode编码,微软公司还提供了通用字符类型TCHAR。

通用字符类型的含义是,如果在项目属性中选择“Unicode字符集”,则TCHAR代表WCHAR,或者在项目中选择“多字符集”,则TCHAR代表char。

喜欢刨根问底的读者,可以在一个使用了TCHAR的项目中,在TCHAR上单击鼠标右键,选择“转到定义”,然后仔细查看随后打开的winnt.h中的内容。这里需要C语言中的条件预处理命令的知识。特别要注意的是,对于winnt.h这样由系统提供的头文件,我们可以打开它,但是千万不要修改它。

在使用通用类型的前提下,程序员只需要注意以下3点:

1)凡是使用关键字char的地方都用TCHAR取代;

2)凡是用char * 的地方都用LPTSTR取代;

3)凡是定义在双引号中的字符串常量,都用TEXT宏或者_T宏重写。

大多数人在学习C语言时,就习惯使用了C-Run Time库的许多字符串处理函数。由于微软公司建议使用通用字符类型,所以表1所示的对照表,如下:

建议初学者通过MSDN了解各种常用TCHAR版本的函数。例如,我们希望使用如下语句在控制台应用程序中输出“Hello world!”:

printf("%s\n","Hello world!");

通过MSDN查找printf的使用帮助,可以知道对应的TCHAR版本是_tprintf,则对应的代码是:

_tprintf("_T(%s)",_T("Hello world!"));

特别要注意的是,由于C运行库(C-Run Time,CRT)对Unicode的支持不健全,使用_tprintf输出Unicode会有问题,需要在程序的入口处设置如下本地属性:

#include <locale.h>
#include <tchar.h>
#include <stdio.h>
int _tmain(int argc,_TCHAR* argv[]){
	//设置本地属性
	setlocale(LC_ALL,"CHS");
	_tprintf("_T(%s)",_T("Hello world!"));

	printf("\n");
	return 0;
}

效果如下:

Visual C++中的TCHAR

时间: 2024-11-05 14:52:18

Visual C++中的TCHAR的相关文章

在Visual C++中使用内联汇编

一.内联汇编的优缺点 因为在Visual C++中使用内联汇编不需要额外的编译器和联接器,且可以处理Visual C++中不能处理的一些事情,而且可以使用在C/C++中的变量,所以非常方便.内联汇编主要用于如下场合: 1.使用汇编语言写函数: 2.对速度要求非常高的代码: 3.设备驱动程序中直接访问硬件: 4."Naked" Call的初始化和结束代码. //(."Naked",理解了意思,但是不知道怎么翻译^_^,大概就是不需要C/C++的编译器(自作聪明)生成的

在Visual Studio中开发Matlab mex文件,生成mexw64/mexw32

csunking贡献,2015-9-22 1712 1.   概述 通过使用C/C++与Matlab混合编程,既可以享受到C代码快速执行的速度,又可以方便的使用Matlab众多的库函数和强大的绘图功能.让Matlab调用C函数是通过DLL文件实现的,而这个DLL的开发过程不仅仅可以使用Matlab自带的mex命令,还可以使用VC++开发环境,使用VC有很多好处,一是让我回到了原来熟悉的开发环境中,二能够使用更加标准的C++编译器,第三点也是最爽的,可以使用VC强大的调试功能. 此次文档更新时使用

在Visual Studio中入门F#

写在前面的话 个人由某方面的兴趣需要学习 F#,网络上有关F#的中文资料很少,微软官方有很不错的文档,但是很可惜的是绝大部分的章节都是英文的.个人是一位.NET爱好者,想自己将 F# 的官方文档翻译出来,算是为了自己喜欢的 .NET 做一些贡献. 原文链接 Getting started with F# in Visual Studio 在这篇文章中 安装 F# 创建一个控制台应用程序 编写您的代码 运行您的代码 使用 F# Interactive 在 Visual Studio IDE 中支持

在Visual Studio2015中使用单元测试

所谓的单元测试(Unit Test),就是对软件的一些模块进行测试以检查其正确性和可靠性,这些模块可以是一个类或者是一个方法等.在Visual studio中,这十分容易实现. 打开Visual studio,文件->新建->项目,在此演示的是为通用Windows平台创建单元测试,因此展开Visual C#->Windows->通用->单元测试应用(通用Windows).如图, 这里单元测试的项目名为UnitTest4Demo 创建完成后,为了使条理清晰,我们在解决方案中新建

VS2015--在 Visual Studio 中调试时映射调用堆栈上的方法

https://msdn.microsoft.com/zh-cn/library/dn194476.aspx 在 Visual Studio 中调试时映射调用堆栈上的方法 创建代码图,以便在调试时对调用堆栈进行可视化跟踪.你可以在图中进行标注以跟踪代码执行的操作,以便专注于查找 Bug. 生成调用堆栈图 1 开始调试.(键盘:"F5") 2 在你的应用进入中断模式或你单步执行某一函数之后,请选择"代码图".(键盘:Ctrl + Shift + `) 当前的调用堆栈在

在Visual Studio中使用GitHub(使用篇)

一.准备工具 上一篇中我们已经安装了Git Extensions和Tortoisegit.在这里我们要为Visual Studio安装一个插件,专门用于Git. Git Source Control Provider,打开http://visualstudiogallery.msdn.microsoft.com/ 搜索"Git"关键字,即可搜索到该插件. 二.配置源码管理工具 三.配置帐户关联 四.使用 后面的事情就很简单了,创建文件夹 pull 一个副本,修改文件,commit文件,

Visual Studio中创建混合移动应用程序解决方案Xamarin Portable Razor

在Visual Studio中创建混合移动应用程序的一个解决方案是使用Xamarin Portable Razor工具,这是ASP.NET MVC API针对移动设备的一个轻量级实现.Xamarin编写了一个示例应用程序,演示了如何使用C#.本地API和Web技术编写iOS及Android应用. Visual Studio中创建混合移动应用程序解决方案Xamarin Portable Razor,布布扣,bubuko.com

去除 Visual Studio 中臃肿的 ipch 和 sdf 文件

使用VS2010建立C++解决方案时,会生成SolutionName.sdf和一个叫做ipch的文件夹,这两个文件再加上*.pch等文件使得工程变得非常的庞大,一个简单的程序都会占用几十M的硬盘容量,可惜毕竟硬盘还没有廉价到免费的地步. 那么,该怎么解决呢?其实可以关闭它.方法: Tools->Options->Text Editor->C/C++->Advanced->Disable Database,设置为True 但是这样的办法会产生另外的一些问题,可能会导致其他的一些

如何在Visual Studio中选择C++和C#的编译器版本

博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:如何在Visual Studio中选择C++和C#的编译器版本.