C++字符串(char/string/wchar_t/char16_t/char32_t)

2024-06-13 12:58

本文主要是介绍C++字符串(char/string/wchar_t/char16_t/char32_t),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

示例:字符串abc转换成ab6

char name[] = "abc";
name[2]=char(6+48);//48是ascii表中,char和int看起来相等的差值

C++中有五种方式可以表示字符串,记住前两种就可以
1.char类型的数组(C语言风格字符串)
2.string类(C++时代诞生的新类)
3.wchar_t宽字节型变量
4.char16_t
5.char32_t

1.可以使用下面的编码来用char数组表示字符串

	char c1[] = {'L','O','L'};char c2[] = {"LOL"};char c3[] = "英雄联盟LOL";const char* c4 = "MEIMEI";std::cout << sizeof(c1) << "\n";//3std::cout << sizeof(c2) << "\n";//4std::cout << sizeof(c3) << "\n";//12std::cout << c4 << "\n";

其中c2打印出4,是因为最后还有一个字符"\0"在隐身,我们看不见
其中c3打印出12,也是相同的原因,4个中文占8个字节,3个英文占3个字节,加一起是11,再加1个最后隐身的"\0",正好12,所以用char数组来表示字符串一定要注意长度的问题

2.string型字符串,关于string类的详细介绍请点击这里
因为string类存在于std命名空间,要想使用string类,则必须添加头文件string并且声明std,像下面这样

#include <string>
using namespace std;
int main()
{string c4 = "约德尔人";
}

或者

#include <string>
int main()
{std::string c4 = "约德尔人";
}

3.wchar_t宽字节型变量
char是1个字节,不能用来保存中文,为了解决这个问题,c++提供了宽字节变量wchar_t,使用方式如下,在不同的系统占字节不一样,不常用,如果执行utf16标准,则占用2个字节,如果执行utf32标准则占用4个字节

#include "pch.h"
#include <iostream>
#include <locale>
int main()
{//必须引用头文件locale,然后调用setlocale方法setlocale(LC_ALL,"chs");//之后才可以定义中文,注意下面是单引号wchar_t aa = L'表';//cout没有实现对wchar_t的支持,所以用cout是不行的,需要用wcoutstd::wcout << aa;
} 

上述wchar_t也可以同时放入多个汉字,这个时候写法如下

// aa变成了数组,而之前的单引号也变成了双引号
wchar_t aa[] = L"表妹";

4.char16_t
由于wchar_t在不同系统环境字节数不一样,所以为了统一,出现了char16_t类型,其中16表示16个bit,也就是2字节
注意:在char16下,英文也占2字节,不要认为英文占1个

// char16_t定义的变量需要在前面加小写u
char16_t aa = u'呵';
std::wcout << aa;
std::cout << aa;

通过打印发现,无论是cout还是wout,打印的都是数字,而不是中文,因为c++中没有实现对char16_t的输出,所以该类型无法在屏幕上显示中文

5.char32_t
占四个字节,其他特性与char16_t一样
注意:在char32下,英文也占4字节,不要认为英文占1个

// char32_t定义的变量需要在前面加大写U
char16_t aa = U'呵';
std::wcout << aa;
std::cout << aa;

这篇关于C++字符串(char/string/wchar_t/char16_t/char32_t)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1057368

相关文章

Java中的String.valueOf()和toString()方法区别小结

《Java中的String.valueOf()和toString()方法区别小结》字符串操作是开发者日常编程任务中不可或缺的一部分,转换为字符串是一种常见需求,其中最常见的就是String.value... 目录String.valueOf()方法方法定义方法实现使用示例使用场景toString()方法方法

C#数据结构之字符串(string)详解

《C#数据结构之字符串(string)详解》:本文主要介绍C#数据结构之字符串(string),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录转义字符序列字符串的创建字符串的声明null字符串与空字符串重复单字符字符串的构造字符串的属性和常用方法属性常用方法总结摘

Java实现时间与字符串互相转换详解

《Java实现时间与字符串互相转换详解》这篇文章主要为大家详细介绍了Java中实现时间与字符串互相转换的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、日期格式化为字符串(一)使用预定义格式(二)自定义格式二、字符串解析为日期(一)解析ISO格式字符串(二)解析自定义

C++ 中的 if-constexpr语法和作用

《C++中的if-constexpr语法和作用》if-constexpr语法是C++17引入的新语法特性,也被称为常量if表达式或静态if(staticif),:本文主要介绍C++中的if-c... 目录1 if-constexpr 语法1.1 基本语法1.2 扩展说明1.2.1 条件表达式1.2.2 fa

如何解决mysql出现Incorrect string value for column ‘表项‘ at row 1错误问题

《如何解决mysql出现Incorrectstringvalueforcolumn‘表项‘atrow1错误问题》:本文主要介绍如何解决mysql出现Incorrectstringv... 目录mysql出现Incorrect string value for column ‘表项‘ at row 1错误报错

python中字符串拼接的几种方法及优缺点对比详解

《python中字符串拼接的几种方法及优缺点对比详解》在Python中,字符串拼接是常见的操作,Python提供了多种方法来拼接字符串,每种方法有其优缺点和适用场景,以下是几种常见的字符串拼接方法,需... 目录1. 使用 + 运算符示例:优缺点:2. 使用&nbsjsp;join() 方法示例:优缺点:3

C++中::SHCreateDirectoryEx函数使用方法

《C++中::SHCreateDirectoryEx函数使用方法》::SHCreateDirectoryEx用于创建多级目录,类似于mkdir-p命令,本文主要介绍了C++中::SHCreateDir... 目录1. 函数原型与依赖项2. 基本使用示例示例 1:创建单层目录示例 2:创建多级目录3. 关键注

java String.join()的使用小结

《javaString.join()的使用小结》String.join()是Java8引入的一个实用方法,用于将多个字符串按照指定分隔符连接成一个字符串,本文主要介绍了javaString.join... 目录1. 方法定义2. 基本用法2.1 拼接多个字符串2.2 拼接集合中的字符串3. 使用场景和示例3

java字符串数字补齐位数详解

《java字符串数字补齐位数详解》:本文主要介绍java字符串数字补齐位数,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java字符串数字补齐位数一、使用String.format()方法二、Apache Commons Lang库方法三、Java 11+的St

C++从序列容器中删除元素的四种方法

《C++从序列容器中删除元素的四种方法》删除元素的方法在序列容器和关联容器之间是非常不同的,在序列容器中,vector和string是最常用的,但这里也会介绍deque和list以供全面了解,尽管在一... 目录一、简介二、移除给定位置的元素三、移除与某个值相等的元素3.1、序列容器vector、deque