在这篇文章中,我们将学习C++中的TCHAR、WCHAR、LPSTR、LPWSTR、LPCTSTR以及代码实例。
通常,1个或2个字节可以用来表示一个字符。ANSI标准是1个字节的大小,用来表示所有的英文字符。
世界上所有的语言都由Unicode表示,它的大小是2个字节的。
Visual C++编译器支持TCHAR、WCHAR、LPSTR、LPWSTR、LPCTSTR来表示ANSI和Unicode字符。
TCHAR
TCHAR用于描述ANSI或Unicode字符串。char的类型用缩写TCHAR来表示。所有编程语言都支持Unicode的编码。TCHAR代表ASCII或多字节字符中的char,它分配1个字节,而在Unicode中它表示WCHAR,分配两个字节。
语法
Typedef char TCHAR;
它通常是这样定义的:
#ifndef _UNICODE
typedef char TCHAR;
#else
typedef wchar_t TCHAR;
#endif
WCHAR
包含16位Unicode字符的Windows数据类型,其缩写为WCHAR。也被称为wchar_t类型。
语法
Typedef char TCHAR;
它通常是这样定义的:
#if !defined(_NATIVE_WCHAR_T_DEFINED)
typedef unsigned short WCHAR;
#else
typedef wchar_t WCHAR;
#endif
程序代码
//wchar implementation in cpp
#include <iostream>
#include<cwchar>
using namespace std;
//main code
int main()
{
wchar_t string1[] = L"Hello" ;
wchar_t string2[] = L"world" ;
//concat stirng
wcscat(string1, string2);
//display string
wcout << L"STRING = "
<< string1 << endl;
return 0;
}
输出
STRING : Hello world
LPSTR
LPSTR是长指针字符串,它是char *或wchar_t *,取决于是否定义了uopn uncicod,其中LP代表长指针,
STR代表字符串。LPSTR表示CHAR或长指针常数的空尾字符串。
语法
typedef const char* LPSTR;
程序代码
#include<iostream>
#include<Windows.h>
using namespace std;
main()
{
string str1 = "Welcome";
LPSTR str2 = new TCHAR[str1.size() + 1];
//copy string
strcpy(str2, str1.c_str());
cout << "String 1 : " << str1 <<endl;
cout << "Copy String : " << str2 <<endl;
}
输出
String 1 : Welcome
Copy String : Welcome
LPWSTR
LPWSTR是一个指向16位Unicode字符串的32位指针。它可以用空字符来结束。换句话说,它是空结束的WCHAR类型的字符串或长指针wchar类型的字符串。
语法
typedef const char* LPWSTR;
#include <string>
#include <iostream>
#include <Windows.h>
using namespace std;
int main()
{
LPWSTR str1 = L"Hello ";
LPWSTR str2 = L"World";
wstring w1(str1);
wstring w2(str2);
wstring w3 = w1+w2;
wcout << w3 << endl;
}
输出
Hello World
LPCSTR
LPCSTR是一个32位的指针,指向一个由8位Windows(ANSI)字符组成的恒定的空尾字符串。换句话说,它是一个简单的字符串,是由微软.NET定义的。要声明这个数据类型,用户必须在我们的程序中包含windows.h头文件。
LP代表长指针,C代表常数。STR代表字符串
语法
typedef const char* LPCSTR;
LPCSTR表示CHAR或Long Pointer Constant的空尾常数字符串。
程序代码
#include<iostream>
#include<Windows.h>
using namespace std;
main()
{
wstring str1 = L"Hello World";
LPCSTR str2 ;
//copy string
str2 = str1.c_str();
wcout << "String 1 : " << str1 <<endl;
wcout << "String 2 : " << str2 <<endl;
}
输出
String 1 : Hello World
String 2 : Hello World