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的清除
tmhhost可谓是相当熟悉国内网络情况(资质方面:ISP\ICP\工商齐备),专业售卖海外高端优质线路的云服务器和独立服务器,包括了:香港的三网cn2 gia、日本 cn2、日本软银云服务器、韩国CN2、美国三网cn2 gia 云服务器、美国 cn2 gia +200G高防的。另外还有国内云服务器:镇江BGP 大连BGP数据盘和系统盘分开,自带windows系统,支持支付宝付款和微信,简直就是专...
spinservers怎么样?spinservers大硬盘服务器。Spinservers刚刚在美国圣何塞机房补货120台独立服务器,CPU都是双E5系列,64-512GB DDR4内存,超大SSD或NVMe存储,数量有限,机器都是预部署好的,下单即可上架,无需人工干预,有需要的朋友抓紧下单哦。Spinservers是Majestic Hosting Solutions,LLC旗下站点,主营美国独立...
公司介绍成都随风云科技有限公司成立于2021年,是国内领先的互联网业务平台服务提供商。公司专注为用户提供低价高性能云计算产品,致力于云计算应用的易用性开发,并引导云计算在国内普及。目前公司研发以及运营云服务基础设施服务平台(IaaS),面向全球客户提供基于云计算的IT解决方案与客户服务,拥有丰富的国内BGP、双线高防、香港等优质的IDC资源。公司一直秉承”以人为本、客户为尊、永续创新&...
widechartomultibyte为你推荐
measureweigh和measure的区别??0x800700050x80070005拒绝访问主要是什么问题weakhashmapjava中几种Map在什么情况下使用,并简单介绍原因及原理bindservice如何启动和停止用servicejdk6jdk-6u14-windows-i586.exe是什么,具体点,谢谢editplus破解版DBTools Manager Professional 破解版在哪里可以下载?索引超出了数组界限索引超出了数组界限是怎么回事啊?spawning在c语言编译时出现Error spawning cl.exe,是怎么回事?弹幕网站谁能给我解释一下什么叫A站,什么叫B站?都是啥网站?数据分析报告范文如何写数据分析报告?
美国虚拟主机购买 政务和公益机构域名注册管理中心 免费linux主机 北京vps n点虚拟主机管理系统 免费申请域名和空间 泛域名绑定 美国独立服务器 rackspace kddi 紫田 缓存服务器 tk域名 12306抢票助手 发包服务器 gg广告 免费个人空间申请 圣诞促销 可外链相册 亚马逊香港官网 更多