创建Unicode版本的VC工程

VC Unicode工程读写文本文件 因为Windows底层处理字符串是以Unicode形式处理的,所以现在一般使用VC开发软件时都选择Unicode的工程。在Unicode工程中,读写文本文件就会有一个比较纠结的问题:      一般情况下我们新建和编辑的文本文件都是ANSI格式的,而在ANSI工程中用着十分方便的CStdioFile读取字符串时使用的是CString类型, 这就导致Unicode工程环境下CStdioFile将Ansi的字符串读取到了CStringW类型中,即使想使用CA2W来转, 也会出现类型不匹配的错误。      这种 阅读详情

很多人开发VC++程序喜欢把工程设置为多字节版本,其实microsoft建议使用Unicode,因为windowsAPI都是unicode版本。设成多自己版本系统过了一步转化过程,影响效率。

 

 

使用Unicode版本了解以下知识就差不多了。

L宏,把字符串的多字节版本转化成宽字节版本

T宏,根据本不能定义选择字符串的版本

 

wchar_t 宽字节字符

 

宽字节处理函数

wcscpy 对应strcpy

wcscat 对应 strcat

wcslen 对应strlen

wprintf 对应printf

swprintf 对应sprintf

wcswcs对应strstr

wscanf对应scanf

iswalnum() 对应isalnum()  测试字符是否为数字或字母

iswalpha()  isalpha() 测试字符是否是字母

iswcntrl() iscntrl() 测试字符是否是控制符

iswdigit() isdigit() 测试字符是否为数字

iswgraph() isgraph() 测试字符是否是可见字符

iswlower() islower() 测试字符是否是小写字符

iswprint() isprint() 测试字符是否是可打印字符

iswpunct() ispunct() 测试字符是否是标点符号

iswspace() isspace() 测试字符是否是空白符号

iswupper() isupper() 测试字符是否是大写字符

iswxdigit() isxdigit() 测试字符是否是十六进制的数字 

 

大小写转换:

宽字符函数 普通C函数 描述 towlower() tolower() 把字符转换为小写 towupper() toupper() 把字符转换为大写

字符比较:

宽字符函数 普通C函数 描述 wcscoll() strcoll() 比较字符串

日期和时间转换:

宽字符函数 描述 strftime() 根据指定的字符串格式和locale设置格式化日期和时间 wcsftime() 根据指定的字符串格式和locale设置格式化日期和时间, 并返回宽字符串 strptime() 根据指定格式把字符串转换为时间值, 是strftime的反过程

打印和扫描字符串:

宽字符函数 描述 fprintf()/fwprintf() 使用vararg参量的格式化输出 fscanf()/fwscanf() 格式化读入 printf() 使用vararg参量的格式化输出到标准输出 scanf() 从标准输入的格式化读入 sprintf()/swprintf() 根据vararg参量表格式化成字符串 sscanf() 以字符串作格式化读入 vfprintf()/vfwprintf() 使用stdarg参量表格式化输出到文件 vprintf() 使用stdarg参量表格式化输出到标准输出 vsprintf()/vswprintf() 格式化stdarg参量表并写到字符串

数字转换:

宽字符函数 普通C函数 描述 wcstod() strtod() 把宽字符的初始部分转换为双精度浮点数 wcstol() strtol() 把宽字符的初始部分转换为长整数 wcstoul() strtoul() 把宽字符的初始部分转换为无符号长整数

多字节字符和宽字符转换及操作:

宽字符函数 描述 mblen() 根据locale的设置确定字符的字节数 mbstowcs() 把多字节字符串转换为宽字符串 mbtowc()/btowc() 把多字节字符转换为宽字符 wcstombs() 把宽字符串转换为多字节字符串 wctomb()/wctob() 把宽字符转换为多字节字符

输入和输出:

宽字符函数 普通C函数 描述 fgetwc() fgetc() 从流中读入一个字符并转换为宽字符 fgetws() fgets() 从流中读入一个字符串并转换为宽字符串 fputwc() fputc() 把宽字符转换为多字节字符并且输出到标准输出 fputws() fputs() 把宽字符串转换为多字节字符并且输出到标准输出串 getwc() getc() 从标准输入中读取字符, 并且转换为宽字符 getwchar() getchar() 从标准输入中读取字符, 并且转换为宽字符 None gets() 使用fgetws() putwc() putc() 把宽字符转换成多字节字符并且写到标准输出 putwchar() getchar() 把宽字符转换成多字节字符并且写到标准输出 None puts() 使用fputws() ungetwc() ungetc() 把一个宽字符放回到输入流中

字符串操作:

宽字符函数 普通C函数 描述 wcscat() strcat() 把一个字符串接到另一个字符串的尾部 wcsncat() strncat() 类似于wcscat(), 而且指定粘接字符串的粘接长度. wcschr() strchr() 查找子字符串的第一个位置 wcsrchr() strrchr() 从尾部开始查找子字符串出现的第一个位置 wcspbrk() strpbrk() 从一字符字符串中查找另一字符串中任何一个字符第一次出现的位置 wcswcs()/wcsstr() strchr() 在一字符串中查找另一字符串第一次出现的位置 wcscspn() strcspn() 返回不包含第二个字符串的的初始数目 wcsspn() strspn() 返回包含第二个字符串的初始数目 wcscpy() strcpy() 拷贝字符串 wcsncpy() strncpy() 类似于wcscpy(), 同时指定拷贝的数目 wcscmp() strcmp() 比较两个宽字符串 wcsncmp() strncmp() 类似于wcscmp(), 还要指定比较字符字符串的数目 wcslen() strlen() 获得宽字符串的数目 wcstok() strtok() 根据标示符把宽字符串分解成一系列字符串 wcswidth() None 获得宽字符串的宽度 wcwidth() None 获得宽字符的宽度

另外还有对应于memory操作的 wmemcpy(), wmemchr(), wmemcmp(), wmemmove(), wmemset().

 

 

 

 

在控制台输出宽字符字符串出现乱码时,加上这两句

#include <locale>

setlocale(LC_ALL, "chs");

为vc工程添加Unicode Debug和Unicode Release 通过使用unicode编译,可以使软件国际化,如何在自己的工程中添加这两种编译方式呢?下面是一个简单的步骤        1、新建一个工程;        2、选择“Build->Configurations”菜单        3、点击“Add”按钮,添加“Unicode Debug”-copy setting form 选择“win32 Debug”;              添加“ 阅读详情

相关推荐

初次使用CxImage类库、VC6配置UNICODE的方法

CxImage类库是一个图像操作类库,功能比较强;是完全免费和公开源码的; 下载一份,VC6打开,Win7;一共有13个项目;一时看不清; 直接构建;生成一个cximage.lib;莫非是一个静态库可直接调用; 静态库”和“动态库”的区别 静态库将导出声明和实现都放在lib中,编译后所有代码都嵌入到宿主程序, 链接器使用从静态链接库LIB获取所有被引用函数的声明与实现,最后链接生成放入exe文件。,并将库同代码一起放到可执行文件中。 动态库相当于一个h文件,是对实现部分(.dll...

bcbobo21cn的专栏 614

ANSI与UNICODE字符函数对照表

宽字符处理函数函数与普通函数对照表 字符分类:宽字符函数普通C函数描述 iswalnum() isalnum()测试字符是否为数字或字母 iswalpha() isalpha()测试字符是否是字母 iswcntrl() iscntrl()测试字符是否是控制符 iswdigit() isdigit()测试字符是否为数字 iswgraph() isgraph()测试字符是否是可见字符 i

983

宽字符集(unicode)操作函数

宽字符集 unicode 操作函数

strchr,wcschr 及strrchr, wcsrchr,_tcschr,_tcsrchr函数

strchr,wcschr 及strrchr, wcsrchr,_tcschr,_tcsrchr函数

tangaowen的专栏 1万+

保姆级教程:在MounRiver Studio上为CH32V307配置FreeRTOS与LwIP网络栈

本文提供了一份详细的教程,指导如何在MounRiver Studio上为CH32V307配置FreeRTOS与LwIP网络栈。从开发环境搭建到网络功能验证,涵盖了FreeRTOS内核定制、LwIP协议栈配置、硬件抽象层实现等关键步骤,帮助开发者快速掌握RISC-V架构下的嵌入式网络开发。

weixin_29275257的博客 362

免疫治疗新思路:用COMPASS算法挖掘单细胞数据中的代谢靶点(含差异分析技巧)

本文介绍了如何利用COMPASS算法从单细胞转录组数据中系统推断免疫细胞的代谢活性,为肿瘤免疫治疗提供新的靶点发现思路。文章详细阐述了COMPASS结合流平衡分析的核心原理,并提供了从差异分析到可成药性评估的完整转化路径,旨在帮助研究者精准定位代谢弱点,开发新型免疫代谢疗法。

weixin_29275257的博客 366

C++字符串完全指南

C++字符串完全指南 - Win32字符编码(一)翻译:连波 14/11/2002 URL: http://www.zdnet.com.cn/developer/tech/story/0,2000081602,39098124,00.htm 前言字符串的表现形式各异,象TCHAR,std::string,BSTR等等,有时还会见到怪怪的用_tcs起头的宏。这个指南的目的就是说明各种字符

步入什么 3087

uds协议之can总线程序升级

uds协议简介 如何利用uds协议升级 升级流程 uds服务类型介绍

fangye945a的博客 1万+

_tcschr、_tcsrchr

用_tcschr代替strchr或者wcschr 用_tcsrchr代替strrchr或者wcsrchr

eickandy的专栏 1万+

从零打造M328晶体管测试仪:硬件DIY与烧录避坑指南

本文是一份详尽的M328晶体管测试仪DIY指南,涵盖从硬件选型、PCB设计、焊接组装到固件烧录的全过程。重点解析了使用AVR单片机与Arduino IDE环境时,如何正确设置熔丝位以避免“白屏”等常见问题,并提供了使用ISP编程器进行烧录的实操步骤与校准方法,帮助电子爱好者成功打造属于自己的高性价比元件测试工具。

weixin_29243063的博客 475

PaddleOCR训练自己的数据

一 、数据准备 采用PPOCRLabel标注自己的数据 PPOCRLabel是一款适用于OCR领域的半自动化图形标注工具,内置PP-OCR模型对数据自动标注和重新识别。使用Python3和PyQT5编写,支持矩形框标注和四点标注模式,导出格式可直接用于PaddleOCR检测和识别模型的训练。 1.1 安装PaddlePaddle pip3 install --upgrade pip # 如果您的机器安装的是CUDA9或CUDA10,请运行以下命令安装 python3 -m pip in.

zyb的博客 1万+

ANSI和UNICODE字符串处理函数

原文地址: (53条消息) 【整理】ANSI和UNICODE字符串处理函数_chenzy945的记录-优快云博客 字符串处理函数常用函数对照 ANSI UNICODE 通用 说明 数据类型 (char.h) (wchar.h) (tchar.h) char wchar_t TCHAR char * wchar_t * TCHAR* LPSTR LPWSTR LPTSTR LPCSTR LPC...

倦鸟归时 422

详解大模型微调数据集构建方法(持续更新)

本文详细介绍了大模型微调数据集构建方法,希望能对学习大模型的同学们有所帮助。 文章目录 1. 前言 2. 微调数据集构建方法 2.1 方法一 2.2 方法二 2.3 方法三 2.4 方法四 2.5 方法五

herosunly的博客 28万+

转换VC工程为UNICODE版的方法

  有时候想将一个VC工程转换为UNICODE版本,却不知怎样转换,下面提供一个转换的方法:        1.为了成功编译支持 UNICODE 的 MFC 程序,必须使用 MFC 的 UNICODE 版本库。该库在定制安装Visual C++ 时是个可选安装项。按以下步骤选择:选中Microsoft Visual C++6.0-->Change Option...-->VC++ MFC an

我心飞扬的专栏 4134

2026年软件测试职业院校技能大赛—ERP管理平台-采购入库模块Bug定位与查找

竞赛对接软件测试相关标准,以“ERP管理平台” 为被测系统,围绕软件测试领域的主流技术及工具,考查选手面 对实际问题的综合分析能力,对测试文档、测试用例的设计能力, 对单元测试、自动化测试、性能测试、接口测试等测试工具及方 法的掌握程度,检验选手团队协作能力、组织规划能力、方法运用能力等。

我是网络安全兼技能大赛工程师,专注网络安全技术学习与技能大赛实战!持续分享最新的技术文章,帮你少走弯路,一起在技术赛道上进步~ 195

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

关于VC60中创建MFC工程时, 使用了UNICODE选项后编译报错的解决方法

在使用VC60创建MFC工程时, 在工程选项中添加 UNICODE 选项后编译报错.msvcrtd.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain@16解决方法: 1.改语言定义:   在Project Settings的"C++"页中的"Preprocessor Definitions"中

cay22的专栏 1619

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

vc6 unicode编码

<br />VC6默认建立的工程是ANSI模式,ANSI模式在繁体中文系统中会出现乱码,需要将ANSI版程序转换成UNICODE<br />1. 添加 UNICODE 和 _UNICODE 预处理定义<br />位置:Project Settings -> C/C++ -> Preprocessor definitions<br />添加了这两个定义后,MFC的一些内置类型如 TCHAR、CString 都将转为支持宽字符类型(wchar_t)<br />2. 使用宽字符相关类型,如:<br />char

luxiaoyu_sdc的专栏 2361

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

CMake生成Unicode版本VC工程

Just add this line in your top CMakeLists.txt file: add_definitions(-DUNICODE -D_UNICODE)

狂人山庄 7999

VC 编程ANSI环境下读写Unicode文件

VC 编程ANSI环境下读写Unicode文件2009-02-26 15:14       没有注意到文件编码的不同会产生这么多的问题,在动手以前查询了很多资料,在本博客中收藏了不少先辈的成果,在这里一并表示致敬!       关于ANSI和Unicode编码的原理在这里也不说了,主要讲下如何读写!       首先确定你的工程是采用的是什么编码环境,默认是ANSI,不

Augusdi的专栏 5224

vc6如何设置Unicode字符集

在VC6中有时需要创建Unicode版本,而工程中默认的两个版本Debug和Release版本都不是Unicode的, 这就需要自己来创建新的版本配置。 创建新的配置之前,有两个问题先必须明确,一是编译Unicode版本必须要安装Unicode库,如果在安装VC6时没有选择,则要重新添加;二是Unicode版本程序入口为wWinMainCRTStartup,而不是通常的入口WinMain。 在

Beyond.cn 2456

为vc工程添加Unicode

为vc工程添加Unicode Debug和Unicode Release     通过使用unicode编译,软件可以适应多种情况,如何在自己的工程中添加这两种编译方式呢?下面是一个简单的步骤     1、新建一个工程;     2、选择“Build->Configurations”菜单     3、点击“Add”按钮,添加“Unicode Debug”-拷贝“win32 Debug”

Jingle的专栏 1329

vc6使用unicode

在VC6中有时需要创建Unicode版本,而工程中默认的两个版本Debug和Release版本都不是Unicode的, 这就需要自己来创建新的版本配置。创建新的配置之前,有两个问题先必须明确,一是编译Unicode版本必须要安装Unicode库,如果在安装VC6时没有选择,则要重新添加;二是Unicode版本程序入口为wWinMainCRTStartup,而不是通常的入口WinMain。在VC6中

流云 1289
上一篇: VC++开发com的理论知识
下一篇: sizeof(字符串)
晚晨
博客等级 码龄25年 23粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值