最近做了个项目,C++的MFC窗口程序,一个基于dialog的学生-图书管理系统,有一些感触,最后会放上一些项目截图和部分代码提供大家参考。如果有什么好方法和建议欢迎指导。

  强类型,为什么这么伤

  我知道强类型是很必要的,但是最近使用的都是一些弱类型的语言,到回来使用C++的时候还真是很不习惯。std::string在学的时候就知道了,好用但还是跟c标准char[]有很大区别的,MFC编程中又加入了没有学过的Cstring和LPSTR、LPWSTR等,下面我就来分享一下一些有关类型转换的感受。

  什么是LPSTR和LPWSTR

  LPSTR和LPWSTR是Win32和VC++所使用的一种字符串数据类型。LPSTR被定义成是一个指向以NULL(‘\0’)结尾的32位ANSI字符数组指针,而LPWSTR是一个指向以NULL结尾的64位双字节字符数组指针。LPSTR在MSDN英文解释:Pointer to a null-terminal string of 8-bit Windows(ANSI) characters.LPSTR在MSDN中文解释:'L'代表Long,'P'代表Pointer(指针),'STR'表示String。

  

CString转换成LPSTR

1.1 方法一:
 CString strFileName;
LPSTR lpStr = strFileName.GetBuffer();
strFileName.ReleaseBuffer();
1.2 方法二:
 CString strFileName;
LPSTR lpStr = (LPSTR)(LPCSTR)strFimeName;

LPSTR转换成CString

LPSTR lpStr = _T("TestStr");
CString str(lpStr);
注意:CString和LPCSTR可直接转换,如下:
CString str;
LPCSTR lpcStr = (LPCSTR)str;//LPSTR在msdn中的定义
typedef LPSTR char * ;

由此可见,LPSTR实际数据类型就是字符指针。

  

(未完,重头戏在后面)

有关C++ std::string 类的类型转换 其他语言永远无法理解的伤的更多相关文章

  1. std::string类详解

    之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必 担心内存是否足够.字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至 ...

  2. (转)C++——std::string类的引用计数

    1.概念 Scott Meyers在<More Effective C++>中举了个例子,不知你是否还记得?在你还在上学的时候,你的父母要你不要看电视,而去复习功课,于是你把自己关在房间里 ...

  3. C/C++关于string.h头文件和string类

    学习C语言时,用字符串的函数例如stpcpy().strcat().strcmp()等,要包含头文件string.h 学习C++后,C++有字符串的标准类string,string类也有很多方法,用s ...

  4. C++学习36 string类和字符串

    C++大大增强了对字符串的支持,除了可以使用C风格的字符串,还可以使用内置的数据类型 string.string 类处理起字符串来会方便很多,完全可以代替C语言中的 char 数组或 char 指针. ...

  5. c++中string类的详解

    ,<时返回-1,==时返回0  string的子串:string substr(int pos = 0,int n = npos) const;//返回pos开始的n个字符组成的字符串strin ...

  6. c++中string类的具体解释

    通过在站点上的资料搜集,得到了非常多关于string类使用方法的文档,通过对这些资料的整理和增加一些自己的代码,就得出了一份比較完整的关于string类函数有哪些和如何用的文档了! 以下先罗列出str ...

  7. (C++)string类杂记

    本文特记录C++中string类(注意string是一个类)的一些值得注意的地方. string类的实例是以‘\0'结束的吗? 这个问题有时还真容易混淆,因为我们可能会将 C++ 语言中的string ...

  8. std::string的拷贝赋值研究

    说明:以下涉及的std::string的源代码摘自4.8.2版本.结论:std::string的拷贝复制是基于引用计数的浅拷贝,因此它们指向相同的数据地址. // std::string类定义type ...

  9. STL之string类详解

    通过在网站上的资料搜集,得到了很多关于string类用法的文档,通过对这些资料的整理和加入一些自己的代码,就得出了一份比较完整的关于string类函数有哪些和怎样用的文档了!下面先罗列出string类 ...

随机推荐

  1. Android选择系统相册或拍照上传

    PhotoUtils.rar

  2. Android 获取信号强度

    大 家看到标题就明白了,我们有的时候在电梯里,有时有的电话有信号,有时有的电话没有信号,这个是非常闹心的,要是我们能监听一下我们自己手机信号的强度就 好了.这样,当我们在等重要的人士的电话,不至于接不 ...

  3. 学习笔记之Lucene

    http://baike.baidu.com/view/371811.htm?fr=aladdin Apache Lucene(http://lucene.apache.org/) Java 全文搜索 ...

  4. 解决MVC Jquery"此请求已被阻止,因为当用在 GET 请求中时,会将敏感信息透漏给第三方网站"的问题

    在ASP.NET MVC项目中,使用AJAX向控制器发送GET请求获取JSON数据时,出现这个错误:"此请求已被阻止,因为当用在 GET 请求中时,会将敏感信息透漏给第三方网站.若要允许 G ...

  5. linux高级命令组合

    ps -auxww | grep httpd 快速找到正在运行的apache服务安装目录 find / -path  'sina_app_v3*' 快速找到根目录下面的sina_app_v3目录 fi ...

  6. spring源码分析之spring-web http详解

    spring-web是spring webmvc的基础,它的功能如下: 1. 封装http协议中client端/server端的request请求和response响应及格式的转换,如json,rss ...

  7. Java基础知识强化之IO流笔记69:Properties练习之 判断文件中是否有指定的键,如果有就修改值的案例

    1. 我有一个文本文件(user.txt),我知道数据是键值对形式的,但是不知道内容是什么. 请写一个程序判断是否有"lisi"这样的键存在,如果有就改变其值为"100& ...

  8. vim高亮显示

    在当期用户的主目录下创建文件.vimrc,打开编辑内容(~/.vimrc): filetype on syntax on

  9. ubuntu 安装 JVM 与 ElasticSearch

    测试环境: Ubuntu x86_64 3.13.0-35-generic 安装jre: $ sudo apt-get install software-properties-common $ sud ...

  10. 【区间覆盖问题】uva 10020 - Minimal coverage

    可以说是区间覆盖问题的例题... Note: 区间包含+排序扫描: 要求覆盖区间[s, t]; 1.把各区间按照Left从小到大排序,如果区间1的起点大于s,则无解(因为其他区间的左起点更大):否则选 ...