问问。。关于LPCSTR。LPSTR、LPCWSTR、LPWSTR、LPTSTR、LPCTSTR

猫仔- 2013-12-12 10:54:55
LPCSTR。LPSTR、LPCWSTR、LPWSTR、LPTSTR、LPCTSTR这几给类型转换。。刚刚学MFC。。感觉好晕。。。现在的思路是清楚了。。但是每次用到转换的时候就总会出点麻烦。。哎哎。。。
_T(),L,A2W,W2A。。这样的转换每次要用的时候就用不上。。特别作为函数的参数的时候。。头大了。。刚开始不头晕的。。现在给弄晕了。。。。看看下面的代码。还有什么方法转换。。特别提示“别用Win32 API函数”,那个我知道。。

//PS:这是对Win.ini配置文件进行读取的一段。。嘿嘿
char st[10];
//st->ReleaseBuffer (10);
GetProfileStringA("tianaa","a","fine",st,10);//这里用CString对象的时候怎么转换!!第四个参数是LPSTR类型的
wchar_t *a=new wchar_t[10];
mbstowcs(a,st,10);
AfxMessageBox(a);
delete a;
a=NULL;

这是我想到的。。笨的方法了。。。书上那个用不了。。第四个参数我本来是这样写的“一个CString对象调用它的GetProBuffer()成员函数,但是这个函数的返回值是LPWSTR类型。。。怎么转换都不行。。就是给这里搞头大了。。不得不在外面设置变量进行转换。。哎哎!!!”
求调教。。大神们!!!!调教我吧.............................................

嗯。。大神们。。回复的时候多打几个字。。把这几个类型之间的转换方法给我列出来。嘿嘿。。特别是作为参数的时候的那种转换
...全文
122 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
这个娜戒海了 2013-12-13
  • 打赏
  • 举报
回复
引用 3 楼 baichi4141 的回复:
LP是指针 C是const T是根据是否定义_UNICODE来分别对应wchar_t(W)和char STR是字符指针 LPCSTR:指针+const+字符-> const char * LPSTR:指针+字符-> char * LPCWSTR:指针+const+wchar_t+字符-> const wchar_t * LPWSTR:指针+wchar_t+字符-> wchar_t * LPTSTR:在定义了_UNICODE的情况下等于LPWSTR,否则等于LPSTR LPCTSTR:在定义了_UNICODE的情况下等于LPCWSTR,否则等于LPCSTR CString:根据是否定义_UNICODE来分别对应CStringW和CStringA 不管是CStringW还是CStringA,都可以直接接收char*,它们重载了=操作符,可以自行转换 CString可以隐式转换为LPCTSTR,C是因为这个内存空间由CString自己管理,不允许用户随意操作,因此是const _T:根据是否定义_UNICODE来分别对应L和空 读取字符串比较简单的方法就是使用CString的自动转换,并且全部使用T版本 从文件中读出来char temp[10],直接CString subStr = temp;然后就可以GetProfileString(subStr,...);了
专业,学习了
baichi4141 2013-12-13
  • 打赏
  • 举报
回复
LP是指针 C是const T是根据是否定义_UNICODE来分别对应wchar_t(W)和char STR是字符指针 LPCSTR:指针+const+字符-> const char * LPSTR:指针+字符-> char * LPCWSTR:指针+const+wchar_t+字符-> const wchar_t * LPWSTR:指针+wchar_t+字符-> wchar_t * LPTSTR:在定义了_UNICODE的情况下等于LPWSTR,否则等于LPSTR LPCTSTR:在定义了_UNICODE的情况下等于LPCWSTR,否则等于LPCSTR CString:根据是否定义_UNICODE来分别对应CStringW和CStringA 不管是CStringW还是CStringA,都可以直接接收char*,它们重载了=操作符,可以自行转换 CString可以隐式转换为LPCTSTR,C是因为这个内存空间由CString自己管理,不允许用户随意操作,因此是const _T:根据是否定义_UNICODE来分别对应L和空 读取字符串比较简单的方法就是使用CString的自动转换,并且全部使用T版本 从文件中读出来char temp[10],直接CString subStr = temp;然后就可以GetProfileString(subStr,...);了
worldy 2013-12-13
  • 打赏
  • 举报
回复
LPSTR、 char* LPWSTR、wchar_t* LPCWSTR、const wchar_t* LPTSTR、 通用版本的LPSTR 或者LPWSTR 根据是否定义UNINCODE确定使用哪个 LPCTSTR 通用版本的 LPCSTR 或者LPCWSTR
猫仔- 2013-12-13
  • 打赏
  • 举报
回复
引用 3 楼 baichi4141 的回复:
LP是指针 C是const T是根据是否定义_UNICODE来分别对应wchar_t(W)和char STR是字符指针 LPCSTR:指针+const+字符-> const char * LPSTR:指针+字符-> char * LPCWSTR:指针+const+wchar_t+字符-> const wchar_t * LPWSTR:指针+wchar_t+字符-> wchar_t * LPTSTR:在定义了_UNICODE的情况下等于LPWSTR,否则等于LPSTR LPCTSTR:在定义了_UNICODE的情况下等于LPCWSTR,否则等于LPCSTR CString:根据是否定义_UNICODE来分别对应CStringW和CStringA 不管是CStringW还是CStringA,都可以直接接收char*,它们重载了=操作符,可以自行转换 CString可以隐式转换为LPCTSTR,C是因为这个内存空间由CString自己管理,不允许用户随意操作,因此是const _T:根据是否定义_UNICODE来分别对应L和空 读取字符串比较简单的方法就是使用CString的自动转换,并且全部使用T版本 从文件中读出来char temp[10],直接CString subStr = temp;然后就可以GetProfileString(subStr,...);了
解释的很清楚。。
猫仔- 2013-12-12
  • 打赏
  • 举报
回复
嘿嘿

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧