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的清除
ZJI本月新上线了香港葵湾机房站群服务器,提供4个C段238个IPv4,支持使用8折优惠码,优惠后最低每月1400元起。ZJI是原Wordpress圈知名主机商家:维翔主机,成立于2011年,2018年9月更名为ZJI,提供中国香港、台湾、日本、美国独立服务器(自营/数据中心直营)租用及VDS、虚拟主机空间、域名注册等业务,所选数据中心均为国内普遍访问速度不错的机房。葵湾二型(4C站群)CPU:I...
今天看到群里的老秦同学在布局自己的网站项目,这个同学还是比较奇怪的,他就喜欢用这些奇怪的域名。比如前几天看到有用.in域名,个人网站他用的.me域名不奇怪,这个还是常见的。今天看到他在做的一个范文网站的域名,居然用的是 .asia 后缀。问到其理由,是有不错好记的前缀。这里简单的搜索到.ASIA域名的新注册价格是有促销的,大约35元首年左右,续费大约是80元左右,这个成本算的话,比COM域名还贵。...
vollcloud LLC首次推出6折促销,本次促销福利主要感恩与回馈广大用户对于我们的信任与支持,我们将继续稳步前行,为广大用户们提供更好的产品和服务,另外,本次促销码共限制使用30个,个人不限购,用完活动结束,同时所有vps产品支持3日内无条件退款和提供免费试用。需要了解更多产品可前往官网查看!vollcloud优惠码:VoLLcloud终生6折促销码:Y5C0V7R0YW商品名称CPU内存S...
widechartomultibyte为你推荐
linux修改文件名Linux中,怎样修改文件名?adversary英语match,是什么意思.?洗牌算法我是小白,eclipse说老式声明,怎么办?帮我看下,不胜感激!! //发牌算法rdl电脑主机上的dvd+rdl是什么意思mindmanager破解版谁有MindManager破解版的bindserviceservice在手机程序中起什么作用拓扑关系简述空间数据的拓扑关系及其对GIS数据处理和空间分析有何重要意义?索引超出了数组界限索引超出了数组界限inode智能客户端inode智能客户端怎么使用wifi?radius认证PPPoE有认证的功能,RADIUS也有验证功能,两者有区别么??
北京域名空间 arvixe tk域名 中国智能物流骨干网 合租空间 169邮箱 域名接入 美国盐湖城 photobucket wordpress中文主题 cdn网站加速 美国迈阿密 空间服务器 hdroad 512内存 架设代理服务器 机柜尺寸 gotoassist asp简介 德国代理ip 更多