LPCTSTR是什么啊?lptstr又是什么?lptstr是数据类型吗?
L表示long指针, 这是为了兼容Windows 3.1等16位操作系统遗留下来的, 在win32中以及其他的32为操作系统中, long指针和near指针及far修饰符都是为了兼容的作用。
没有实际意义。
P表示这是一个指针,C表示是一个常量T在Win32环境中, 有一个_T宏,这个宏用来表示你的字符是否使用UNICODE, 如果你的程序定义了UNICODE或者其他相关的宏,那么这个字符或者字符串将被作为UNICODE字符串,否则就是标准的ANSI字符串。
STR表示这个变量是一个字符串。
所以LPCTSTR就表示一个指向常固定地址的可以根据一些宏定义改变语义的字符串。
同样, LPCSTR就只能e799bee5baa6e997aee7ad94e58685e5aeb931333236393661是一个ANSI字符串,在程序中我们大部分时间要使用带T的类型定义。
LPCTSTR == const TCHAR *
LP和P在win32中是等效的,都是指针的意思。
PTSTR的定义 typedef LPWSTR PTSTR, LPTSTR;
STR表示字符串。
问题就出在T上面。
T是一个宏,当没定义unicode时为空,定义unicode后表示为宽字符。
所以当定义unicode后,PTSTR转换为PSTR(LPSTR,一样意思)就不能直接转换了,因为一个是unicode,一个是ascii
结论:unicode下,PTSTR转换为PSTR是个编码转换问题。
编码转换可以用MS的函数完成。
WideCharToMultiByte将unicode转换成ascii
MultiByteToWideChar将ascii转换成unicode怎样把unsigned short 转换为 unsigned char
unsigned short s;
unsigned char c;
1.直接赋值
c=s;
2.强制转换
c=(unsigned char)s;
3.C++建议用法
c = static_cast<unsigned char>(s);
//short一般占两个字节
char占一个字节C++中为什么不能输出宽字符(Unicode字符)?
int main()
{
char * ch = "●"; //按字符串输出试试 一个字符只占一个字节,显然你的数据不是一个字节,因此,按字符串处理一下。
cout << ch << endl;
}c++谁能给个 MultiByteToWideChar和WideCharToMultiByte正确
/************************************
* 函数说明: Utf8转换为Unicode
* 返 回 值: wstring
* 参数说明: szSrcText
* 注意事项:
************************************/
wstring UTF8ToUnicode( const string& szSrcText )
{
int len = 0;
len = szSrcText.length();
int unicodeLen = ::MultiByteToWideChar( CP_UTF8,
0,
szSrcText.c_str(),
-1,
NULL,
0 );
wchar_t * pUnicode;
pUnicode = new wchar_t[unicodeLen+1];
memset(pUnicode,0,(unicodeLen+1)*sizeof(wchar_t));
::MultiByteToWideChar( CP_UTF8,
0,
szSrcText.c_str(),
-1,
(LPWSTR)pUnicode,
unicodeLen );
wstring rt;
rt = ( wchar_t* )pUnicode;
delete pUnicode;
return rt;
}
/************************************
* 函数说明: Unicode转换为Utf8
* 返 回 值: wstring
* 参数说明: szSrcText
* 注意事项:
************************************/
string UnicodeToUTF8( const wstring& szSrcText )
{
char* pElementText;
int iTextLen;
// wide char to multi char
iTextLen = WideCharToMultiByte( CP_UTF8,
0,
szSrcText.c_str(),
-1,
NULL,
0,
NULL,
NULL );
pElementText = new char[iTextLen + 1];
memset( ( void* )pElementText, 0, sizeof( char ) * ( iTextLen + 1 ) );
::WideCharToMultiByte( CP_UTF8,
0,
szSrcText.c_str(),
-1,
pElementText,
iTextLen,
NULL,
NULL );
string strText;
strText = pElementText;
delete[] pElementText;
return strText;
}
字符编码转换用的如何将string转化成wchar
测试环境: vs2008
开发语言:C++
#include <iostream>
#include <windows.h>
#include <string>
// wchar_t to string
void Wchar_tToString(std::string& szDst, wchar_t *wchar)
{
wchar_t * wText = wchar;
DWORD dwNum = WideCharToMultiByte(CP_OEMCP,NULL,wText,-1,NULL,0,NULL,FALSE);// WideCharToMultiByte的运用
char *psText; // psText为char*的临时数组,作为赋值给std::string的中间变量
psText = new char[dwNum];
WideCharToMultiByte (CP_OEMCP,NULL,wText,-1,psText,dwNum,NULL,FALSE);// WideCharToMultiByte的再次运用
szDst = psText;// std::string赋值
delete []psText;// psText的清除
官方网站:https://www.akkocloud.com/AkkoCloud新品英国伦敦CN2 GIA已上线三网回程CN2 GIA 国内速度优秀.电信去程CN2 GIALooking Glass:http://lonlg.akkocloud.com/Speedtest:http://lonlg.akkocloud.com/speedtest/新品上线刚好碰上国庆节 特此放上国庆专属九折循环优惠...
官方网站:点击访问青云互联活动官网优惠码:终身88折扣优惠码:WN789-2021香港测试IP:154.196.254美国测试IP:243.164.1活动方案:用户购买任意全区域云服务器月付以上享受免费更换IP服务;限美国区域云服务器凡是购买均可以提交工单定制天机防火墙高防御保护端口以及保护模式;香港区域购买季度、半年付、年付周期均可免费申请额外1IP;使用优惠码购买后续费周期终身同活动价,价格不...
imidc对日本独立服务器在搞特别促销,原价159美元的机器现在只需要88美元,而且给13个独立IPv4,30Mbps直连带宽,不限制流量。注意,本次促销只有一个链接,有2个不同的优惠码,你用不同的优惠码就对应着不同的配置,价格也不一样。88美元的机器,下单后默认不管就给512G SSD,要指定用HDD那就发工单,如果需要多加一个/28(13个)IPv4,每个月32美元...官方网站:https:...
widechartomultibyte为你推荐
bloomfilter电脑游戏图像设置里的Bloom是什么意思?showwindowvb ShowWindow 的使用方法 隐藏/显示 指定窗口 (完整代码)谢谢showwindowC#中showwindow控件在哪里??showwindowShowWindow和EnableWindow区别拓扑关系什么是矢量数据、栅格数据、拓扑关系?vipjrvipjr跟哒哒英语比,两家公司的区别在哪里?各自的特点有哪些?radius认证PPPoE有认证的功能,RADIUS也有验证功能,两者有区别么??radius认证电信或网通的RADIUS认证都记录些什么?谁能说说ISP的宽带帐号检查流程色库photoshop7.0怎么改PANTONE色号faq是什么意思fans是什么意思?
美国网站空间 windows虚拟主机 河南vps burstnet ssh帐号 html空间 嘟牛 asp免费空间申请 lol台服官网 免费phpmysql空间 免费网页申请 免费mysql数据库 华为云服务登录 论坛主机 服务器论坛 lamp架构 成都主机托管 汤博乐 nnt 石家庄服务器 更多