【C++】了解一下编码

个人主页 : zxctscl
如有转载请先通知

文章目录

  • 1. 前言
  • 2. ASCII编码
  • 3. unicode
  • 4. GBK
  • 5. 类型转换

1. 前言

看到string里面还有Template instantiations:
在这里插入图片描述
string其实是basic_string<char>,它还是一个模板。
在这里插入图片描述
再看看wstring:
在这里插入图片描述
来看看什么是wchar_t?
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
来看看一个字符在不同编码下的大小:

char ch1;
	wchar_t ch2;
	char16_t ch3;
	char32_t ch4;

	cout << sizeof(ch1) << endl;
	cout << sizeof(ch2) << endl;
	cout << sizeof(ch3) << endl;
	cout << sizeof(ch4) << endl;

在这里插入图片描述
编码就是文字在计算机的存储和表示。

2. ASCII编码

在之前C语言就经常用到ASCII编码:
ASCII (American Standard Code for Information Interchange):美国信息交换标准代码是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是最通用的信息交换标准,并等同于国际标准 ISO/IEC 646。ASCII第一次以规范标准的类型发表是在1967年,最后一次更新则是在1986年,到目前为止共定义了128个字符

在计算机的内存和硬盘里面不可能存字母,它存的只有0和1。

那么一段英文文字,那么怎么存储到计算机中呢?
交换映射,看看ASCII表
在这里插入图片描述

用8个bit就可以表达2^8个值,无符号就是0-255,有符号就是-128-127。

举个例子:
a在内存中存的是ASCII码值是97,也就是16*6+1
在这里插入图片描述
而要在显示器上面显示a时,又会去查97对应的是哪个字符,找到后显示出来:
在这里插入图片描述

ASCII码值就是那些符号对应的二进制和十进制的值。
所以编码表是符号和这些值映射的表。

像下面给的是整形98,但类型是char,它要查ASCII码,对应的就是b:
在这里插入图片描述

3. unicode

但ASCII不能表示中文,想要把中文存在计算机上面,一个字节不够表达中文,那么要怎么表达呢?

统一码(Unicode),也叫万国码、单一码,由统一码联盟开发,是计算机科学领域里的一项业界标准,包括字符集、编码方案等。
统一码是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。

在这种语言环境下,不会再有语言的编码冲突,在同屏下,可以显示任何语言的内容,这就是统一码的最大好处。就是将世界上所有的文字用2个字节统一进行编码。那样,像这样统一编码,2个字节就已经足够容纳世界上所有语言的大部分文字了。
在这里插入图片描述

在统一码中,汉字“字”对应的数字是23383。在统一码中,我们有很多方式将数字23383表示成程序中的数据,包括:UTF-8、UTF-16、UTF-32。UTF是“UCS Transformation Format”的缩写,可以翻译成统一码字符集转换格式,即怎样将统一码定义的数字转换成程序数据。
在这里插入图片描述
像string就适合UTF-8。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
UTF-16
UTF-16编码以16位无符号整数为单位。我们把统一码编码记作U。编码规则如下:
如果U<0x10000,U的UTF-16编码就是U对应的16位无符号整数

为了将一个WORD的UTF-16编码与两个WORD的UTF-16编码区分开来,统一码编码的设计者将0xD800-0xDFFF保留下来,并称为代理区(Surrogate):
D800-DB7F ║ High Surrogates ║ 高位替代
DB80-DBFF ║ High Private Use Surrogates ║ 高位专用替代
DC00-DFFF ║ Low Surrogates ║ 低位替代

这个适合UTF-16:
在这里插入图片描述

在这里插入图片描述

这个适合UTF-32:
在这里插入图片描述

常用的是UTF-8,它能兼容ASCII。

有时候没有初始化时候就会出现这样:

在这里插入图片描述

4. GBK

GBK全称《汉字内码扩展规范》(GBK即“国标”、“扩展”汉语拼音的第一个字母,英文名称:Chinese Internal Code Specification) ,中华人民共和国全国信息技术标准化技术委员会1995年12月1日制订,国家技术监督局标准化司、电子工业部科技与质量监督司1995年12月15日联合以技监标函1995 229号文件的形式,将它确定为技术规范指导性文件。2000年已被GB18030-2000《信息交换用 汉字编码字符集 基本集的扩充》国家强制标准替代。 2005年GB18030-2005发布,替代了GB18030-2000。

在这里插入图片描述

5. 类型转换

把其他类型转换成string类型就用to_string
在这里插入图片描述
举个例子:

    int i = 1234;
	double d = 11.22;
	string s1 = to_string(i);
	string s2 = to_string(d);

在这里插入图片描述
在这里插入图片描述
stoi把字符串转其他类型。
在这里插入图片描述
举个例子:

string s3("45.55");
double d3 = stod(s3);

在这里插入图片描述

有问题请指出,大家一起进步!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/462421.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

大型污水处理站运维公司怎么选择

大型污水处理站运维公司的选择是关乎环境保护和城市发展的重要决策。在如今污水治理领域日益重要的背景下&#xff0c;选择一家专业的运维公司对于确保污水处理站的高效运行、提高处理效果和保护环境具有关键意义。那么&#xff0c;我们应该如何选择适合自己的大型污水处理站运…

1.Spring入门

1.1 Spring简介 Spring是一个轻量级Java 企业级应用程序开发框架&#xff0c;目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题。它是一个分层的JavaSE/EEfull-stack(一站式) 轻量级开源框架&#xff0c;为开发Java应用程序提供全面的基础架构支持。 Spring Fra…

代码随想录算法训练营第40天 | 343. 整数拆分 ,96.不同的二叉搜索树

动态规划章节理论基础&#xff1a; https://programmercarl.com/%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html 343. 整数拆分 题目链接&#xff1a;https://leetcode.cn/problems/integer-break/ 思路&#xff1a; 动规五部曲&#xf…

tomcat 实现会话绑定

Tomcat 后端服务器实现 Session ID会话保持 基础架构&#xff1a; 7-6 代理服务器nginx配置 7-3 tomcat 服务器 7-5 同理 测试&#xff1a; 此时刷新&#xff0c;会话ID一直在变&#xff0c;这样不好 如何解决呢&#xff1f; 不好的是确定ip之后&#xff0c;会一直在一台机上…

AI对话/绘画完整系统(附完整源码,已开源)

文章目录 功能UI界面使用地址环境完整源码 功能 支持邮件激活账号&#xff0c;微信登录&#xff0c;短信登录支持上下文对话支持GPT4,claude3文件/图片分析分析&#xff0c;几乎所有模型均支持支持模糊匹配自定义回复消息支持按此按张按余额多种扣费方式支持套餐卡密生成及自定…

【C语言步行梯】各类操作符、类型转换与原码、反码、补码详谈

&#x1f3af;每日努力一点点&#xff0c;技术进步看得见 &#x1f3e0;专栏介绍&#xff1a;【C语言步行梯】专栏用于介绍C语言相关内容&#xff0c;每篇文章将通过图片代码片段网络相关题目的方式编写&#xff0c;欢迎订阅~~ 文章目录 算术运算符原码、反码、补码介绍移位运算…

C++11:自动类型推导 auto 和 decltype(下)

前面两篇文章分别介绍了 auto 和 decltype&#xff0c;今天聊聊它们两者之间的区别。 语法格式的区别 auto varname value; // auto的语法格式 decltype(exp) varname [ value]; // decltype的语法格式其中&#xff0c;varname 表示变量名&#xff0c;value 表示赋给变量的值…

如何有效地组织和管理自己的代码?

如何有效地组织和管理自己的代码&#xff1f; &#x1f9e9; &#x1f6e0;️ 如何有效地组织和管理自己的代码&#xff1f; &#x1f9e9;摘要引言正文1. 使用合适的目录结构2. 模块化设计3. 命名规范4. 版本控制 总结参考资料 博主 默语带您 Go to New World. ✍ 个人主页——…

L3-020 至多删三个字符(Python)

给定一个全部由小写英文字母组成的字符串&#xff0c;允许你至多删掉其中 3 个字符&#xff0c;结果可能有多少种不同的字符串&#xff1f; 输入格式&#xff1a; 输入在一行中给出全部由小写英文字母组成的、长度在区间 [4, 106] 内的字符串。 输出格式&#xff1a; 在一行…

Redis基础部分学习笔记

一、Redis的安装与配置 Redis是基于内存的&#xff0c;是单线程的。Redis可以用作数据库、缓存、消息中间件。 Redis一些常见的应用场景如下&#xff1a; &#xff08;1&#xff09;缓存 利用Redis快速的读写速度&#xff0c;可以将热点数据放入Redis中&#xff0c;应用从R…

零知识玩转AVH(7)—— 门槛任务(2)所遇错误及解决(1)

接前一篇文章&#xff1a;零知识玩转AVH&#xff08;6&#xff09;—— 门槛任务&#xff08;1&#xff09;源码下载、编译及运行 上一回说到完成门槛任务 https://github.com/ArmDeveloperEcosystem/Paddle-examples-for-AVH &#xff08;推荐&#xff0c;内含 ML 视觉用例&am…

前后端分离项目环境搭建

1. 使用到的技术和工具 springboot vue项目的搭建 工具 idea&#xff0c;mavennodejs 2. 后端框架搭建 利用maven创建springboot项目 3. 前端项目搭建 1. 安装相关工具 nodejs&#xff1a; 一个开源、跨平台的 JavaScript 运行时环境&#xff0c;可以理解成java当中需要…

企业微信 API 接口调用教程:深入解析企业微信 API 的用法

本文通过 access_token 凭证的方式来讲解怎么调用 企业微信 API&#xff0c;并一步步介绍如何获取企业微信 API 的 corpsecret、corpid、access_token 凭证以及怎么向企业微信的应用发送消息。 企业微信 API 在线地址为&#xff1a;qiyeweixin.apifox.cn/ &#xff0c;这个在线…

LInux 进程替换(理解系统调用)

目录 一、替换原理 二、替换函数 1、exec函数 2、命名理解 3、返回值 4、使用execl/lp、execv/vp 5、执行自定义命令 Makefile编译多个文件 命令行程序mycmd.c 传入自己的可执行文件 7、子进程都继承父进程环境变量 8、execle/ve修改子进程环境变量 9、exece函数为…

Hack The Box-Jab

目录 信息收集 nmap enum4linux 服务信息收集 Pidgin kerbrute hashcat 反弹shell & get user 提权 系统信息收集 端口转发 漏洞利用 get root 信息收集 nmap 端口探测┌──(root㉿ru)-[~/kali/hackthebox] └─# nmap -p- 10.10.11.4 --min-rate 10000 -oA…

Docker----Dockerfile构建微服务镜像

目录 一、关键步骤 二、具体步骤 1、准备后端jar包(这里以java后端演示) 2、编写Dockerfile 3、构建镜像 4、运行镜像容器 5、测试是否成功 一、关键步骤 1、准备后端jar包(这里以java后端演示) 2、编写Dockerfile 3、构建镜像 4、运行镜像容器 5、测试是否成功 二…

Openfeign使用教程(带你快速体验Openfeign的便捷)

文章摘要 本文中将教会您如何快速使用Openfeign&#xff0c;包括Opengfeign的基础配置、接口调用、接口重试、拦截器实现、记录接口日志信息到数据库 文章目录 文章摘要一、Openfeign初步定义二、Openfeign快速入门1.引入maven坐标2.启动类增加EnableFeignClients注解3.定义fei…

从金蝶云星空到钉钉通过接口配置打通数据

从金蝶云星空到钉钉通过接口配置打通数据 对接系统金蝶云星空 金蝶K/3Cloud&#xff08;金蝶云星空&#xff09;是移动互联网时代的新型ERP&#xff0c;是基于WEB2.0与云技术的新时代企业管理服务平台。金蝶K/3Cloud围绕着“生态、人人、体验”&#xff0c;旨在帮助企业打造面…

IDEA连接Mysql失败:下载驱动失败,Failed todownload Cannot download Read timed out

解决&#xff1a; 1. 手动加入jar包 2.选择自己maven仓库中存在mysql-connector 3. 选择完毕后&#xff0c;确定使用&#xff1a; 4. 进行测试连接

【代码随想录】【回溯算法】补day24:组合问题以及组合的优化

回溯算法&#xff1a;递归函数里面嵌套着for循环 给定两个整数 n 和 k&#xff0c;返回 1 … n 中所有可能的 k 个数的组合。 示例: 输入: n 4, k 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ] 包含组合问题和组合问题的剪枝优化 class solution:def combine(se…