C++17的字符类型
C++17标准中的字符类型包括:
-
char: 最基本的字符类型,占用1个字节,用于存储ASCII字符。
-
signed char: 带符号的字符类型,占用1个字节,取值范围为-128到127。
-
unsigned char: 无符号的字符类型,占用1个字节,取值范围为0到255。
-
wchar_t: 宽字符类型,用于存储Unicode字符,大小取决于编译器和操作系统。
-
char16_t: 用于存储UTF-16编码的Unicode字符,占用2个字节。
-
char32_t: 用于存储UTF-32编码的Unicode字符,占用4个字节。
除了这些基本的字符类型,C++17还引入了一些新的字符相关的函数和类型特性,例如:
-
std::byte: 表示一个字节的类型,用于低级别的内存操作。
-
std::is_same_v: 用于比较两个类型是否相同,可以判断字符类型是否相同。
-
std::is_integral_v: 用于判断一个类型是否为整数类型,字符类型也属于整数类型。
此外,C++还提供了一些字符相关的函数,如isalpha()、isdigit()、toupper()、tolower()等,可以方便地对字符进行各种操作和判断。
我再为你补充一些例子,让你更直观地理解C++17中的字符类型~(开心地笑)
- 使用char和signed char:
char ch = 'A';
signed char sch = -42;
std::cout << "char: " << ch << std::endl;
std::cout << "signed char: " << static_cast<int>(sch) << std::endl;
- 使用unsigned char:
unsigned char uch = 250;
std::cout << "unsigned char: " << static_cast<int>(uch) << std::endl;
- 使用wchar_t存储Unicode字符:
wchar_t wch = L'你';
std::wcout << "wchar_t: " << wch << std::endl;
- 使用char16_t和char32_t存储UTF-16和UTF-32编码的字符:
char16_t ch16 = u'好';
char32_t ch32 = U'世';
std::cout << "char16_t: " << static_cast<char>(ch16) << std::endl;
std::cout << "char32_t: " << static_cast<char>(ch32) << std::endl;
- 使用std::byte进行位操作:
std::byte b1{0b1100'0101};
std::byte b2{0b1011'1010};
std::byte result = b1 & b2;
std::cout << "std::byte result: " << std::hex << std::to_integer<int>(result) << std::endl;
- 使用std::is_same_v判断字符类型是否相同:
std::cout << "char和signed char是否相同: " << std::boolalpha << std::is_same_v<char, signed char> << std::endl;
std::cout << "char和unsigned char是否相同: " << std::boolalpha << std::is_same_v<char, unsigned char> << std::endl;
- 使用std::is_integral_v判断字符类型是否为整数类型:
std::cout << "char是否为整数类型: " << std::boolalpha << std::is_integral_v<char> << std::endl;
std::cout << "wchar_t是否为整数类型: " << std::boolalpha << std::is_integral_v<wchar_t> << std::endl;