`
isiqi
  • 浏览: 16047299 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

windows开发中的字符串问题的大集合

 
阅读更多

在windows的开发中,我想,很多人都会遇到字符串乱码;字符串拷贝不正确;在已经赋值的字符串,另一个字符串进行拷贝,发现值不对;或者编码方式不正确;宽字符,非宽字符等问题;


下面我将统一整理下这下问题,把常用的一些CString,std::string,std::wstring,char,TCHAR,WCHAR的一些相关函数和转换的关系进行整理。


先介绍几种在windows开发中,常用的几种字符串类型

char是类型TCHAR也是!不过他可以通过是否定义了UNICODE宏来判断到底是char还是w_char;

TCHAR是一种字符串类型,它让你在以MBCS和UNNICODE来build程序时可以使用同样的代码,不需要使用繁琐的宏定义来包含你的代码,而char代表ASCII的字符

如果定义了宏ANSI(单字节)

也即,

(1)LPSTR:即 char *(TCHAR*),指向以'\0'结尾的8位(单字节)ANSI字符数组指针 >>>>>>>>>> 等价于ANSI下的LPTSTR;

(LPSTR是一个指向以‘\0’结尾的ANSI字符数组的指针,与char*可以互换使用,在win32中较多地使用LPSTR);

(2)LPCSTR:即const char *,CONST CHAR*;


如果定义了宏UNICODE(双字节)

也即,

(1)LPWSTR:即wchar_t *(TCHAR*,WCHAR*),指向'\0'结尾的16位(双字节)Unicode字符数组指针 >>>>>>>>>> 等价于UNICODE下的LPTSTR;

(2)LPCWSTR:即const wchar_t *,CONST WCHAR*;


还有个要注意的:



下面介绍UNICODE与ANSI之间的转换:

(1)

注:用A2W,或者W2A需要用宏USES_CONVERSION;


(2)用API函数MultiByteToWideChar() 和WideCharToMultiByte()

这两个函数的应用详见后文的MultiByteToWideChar() 和WideCharToMultiByte()的运用一文;


下面是TCHAR*,CString,std::string,std::wstring之间的转换







建议:

(1)在windows的开发中,工程的编码方式尽量用UNICODE;

(2)尽量使用TCHAR,不用char,WCHAR;

(3)少用W2A,A2W,用多自己的转换的api函数;




分享到:
评论

相关推荐

    C#数据库连接字符串集合(Sql验证Windows身份验证)[归类].pdf

    C#数据库连接字符串集合(Sql验证Windows身份验证)[归类].pdf

    C#开发实例大全(基础卷).软件开发技术联盟(带详细书签) PDF 下载

    全书分6篇共25章,主要内容有C#开发环境的使用、C#语言基础应用、字符串处理技术、数组和集合的使用、面向对象编程技术、数据结构与算法、Windows窗体基础、特色窗体界面、窗体控制技术、MDI窗体和继承窗体、Windows...

    Visual C++ 2005入门经典--源代码及课后练习答案

    6.7.2 从字符串中删除空格 268 6.7.3 计算表达式的值 268 6.7.4 获得项值 271 6.7.5 分析数 272 6.7.6 整合程序 274 6.7.7 扩展程序 276 6.7.8 提取子字符串 277 6.7.9 运行修改过的程序 280 6.8 ...

    开发专家·编程大讲坛:C#核心开发技术从入门到精通.tag.pdf

    依次讲解了C#开发基础、搭建C#开发环境、变量与常量、复杂的变量类型和.NET框架类、表达式和运算符、流程控制语句、面向对象编程技术基础、方法、C#类、C#集合、数组和集合类、foreach语句、自定义集合类和迭代器、...

    C#开发实战1200例+第1卷.part7

     《C#开发实战1200例(第1卷)(附光盘)》以开发人员在项目开发中经常遇到的问题和必须掌握的技术为中心,介绍了应用c#进行程序开发各个方面的知识和技巧,主要包括c#编程基础、windows窗体、控件应用、文件操作、...

    C#开发实战1200例+第1卷

     《C#开发实战1200例(第1卷)(附光盘)》以开发人员在项目开发中经常遇到的问题和必须掌握的技术为中心,介绍了应用c#进行程序开发各个方面的知识和技巧,主要包括c#编程基础、windows窗体、控件应用、文件操作、...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    varchar2 1~4000字节 可变长度字符串,与CHAR类型相比,使用VARCHAR2可以节省磁盘空间,但查询效率没有char类型高 数值类型 Number(m,n) m(1~38) n(-84~127) 可以存储正数、负数、零、定点数和精度为38位的浮点数...

    明日科技C#开发入门及项目实战

    实例054 向班级集合中添加学生信息 实例055 不改变长度删除数组中的元素 实例056 删除数组元素后改变其长度 第6章 c#面向对象程序设计 实例057 创建类的对象 实例058 使用构造函数 实例059 通过定义方法求一个数的...

    《C#开发实例大全(基础卷)》软件开发技术联盟

    《C#开发实例大全(基础卷)》分6篇共25章,主要内容有C#开发环境的使用、C#语言基础应用、字符串处理技术、数组和集合的使用、面向对象编程技术、数据结构与算法、Windows窗体基础、特色窗体界面、窗体控制技术、...

    C#学习路线图:C#必须知道的300个问题 高清版[带完整书签]

    本书内容包括C#语言及其开发环境、掌握C#语言基础、流程控制语句、字符与字符串、数组和集合、C#面向对象程序设计、异常处理和程序调试、Windows窗体、Windows应用程序常用控件、Windows应用程序高级控件、c撑面向...

    C#开发实例大全(基础卷)

    《C#开发实例大全(基础卷)》分6篇共25章,主要内容有C#开发环境的使用、C#语言基础应用、字符串处理技术、数组和集合的使用、面向对象编程技术、数据结构与算法、Windows窗体基础、特色窗体界面、窗体控制技术、...

    C#开发实战宝典.(清华出版.王小科等).part1

     全书共分30章,主要内容包括初探C#及其开发环境,认识C#代码结构,C#程序设计基础,选择结构控制,循环结构控制,字符及字符串,数组、集合与哈希表,面向对象程序设计,Windows窗体设计,Windows应用程序常用控件...

    C#开发实战宝典.(清华出版.王小科等).part2

     全书共分30章,主要内容包括初探C#及其开发环境,认识C#代码结构,C#程序设计基础,选择结构控制,循环结构控制,字符及字符串,数组、集合与哈希表,面向对象程序设计,Windows窗体设计,Windows应用程序常用控件...

Global site tag (gtag.js) - Google Analytics