-
c++之字符串的两种表达方式
2018-01-07 19:17:01处理字符串的两种方式:字符数组和string类库 一、字符数组: 1、字符串的初始化: char str1[4] ={'q','w','e','r'};//字符数组,不是字符串 charstr2[5] = {'q','w','e','r','\0'};//用字符数组来存储字符...处理字符串的两种方式:字符数组和string类库
一、字符数组:
1、字符串的初始化:
char str1[4] ={'q','w','e','r'};//字符数组,不是字符串charstr2[5] = {'q','w','e','r','\0'};//用字符数组来存储字符串
以上几种方式都是正确的,在输出上也没有什么区别,都可以直接用 cout<<srt1; 这种方式来打印数组。
但是如果这样写:
charst3[3] = {"qwe"};//用字符数组存储字符串常量
是错的,因为"qwe"是字符串常量,系统会自动在后面加上'\0',必须留出一位用来存储'\0'来表示字符串的结束;
利用cin初始化数组:
注意两点:
编译器会自动在最后加'\0',用户输入时编译器通过空格和回车以及tab来确定一个字符串的结束。测试:如果定义一个字符数组(足够长),利用cin获取值,再验证字符串后面会不会自动加'\0'?
代码:#include<iostream> using namespace std; int main(int argc,char** argv) { chara[10];// = {'q','w','e','r'}; cin>>a; int b= (int)a[3]; cout<<b; return0; }
方法:先后输入三个字符和四个字符。
结果:第一次输出0('\0'的ASCII码值),第二次输出的是最后一位字符的ASCII码值。即会自动加'\0'。
这里有一个问题:如果定义数组长度为3,但是在用户输入两个以上字符时,vs会报错,devcpp不会报错。
如何解决想要录入带空格的字符串呢?
getline:
这是一个可以录入一行字符的函数,遇到回车即停止,并且用'\0'替代输入队列的回车。
cin.getline(str:数组名,length:想要录入的长度);
如果输入长度大于length-1(编译器需要一位来存储'\0'),则多余部分不录入。
getline函数的返回值类型还是cin,所以getline函数可以连续调用,如:cin.getline(str1,10).getline(str2,20);
get:
与getline用法几乎相同,唯一区别就是利用get不会替代掉输入队列的回车,而是将其保留下来,所以当再次调用时就会因为第一个字符就是回车而让这次没有录入字符。
二、string类:
字符数组的缺点:1、无法实现数组的动态定义(数组的大小必须在编译时确定,就是说必须在编写时就要确定数组的大小,用户无法定义。)
2、不安全,容易读取到数组接线以外
string类初始化字符串:
使用string类必须在头文件中包含<string>
掌握最简单的一个用法,“+”法,可以对字符串进行拼接。更多用法移步:cpp——string常用函数用法总结string str1;//初始化字符串长度为0 string str2 = "hello";//定义时直接初始化 cin>>str1;//利用cin初始化字符串变量,字符串大小根据用户输入长度来定(解决了字符数组的弊端)
#include <iostream> using namespace std; int main(int argc, char** argv) { string str1; string str2 = "hello!"; cout<<"请输入一个名字:\n"; cin>>str1; cout<<str1 +" " + str2 ; }
-
全角字符和半角字符的概念
2019-11-20 16:32:151. 什么是全角和半角? 全角–指一个字符占用两个标准字符位置。 汉字字符和规定了全角的英文字符及国标GB2312-80中的图形符号和特殊字符都是全角...在系统内部,以上三种字符是作为基本代码处理的,所以用户输...1. 什么是全角和半角?
-
全角–指一个字符占用两个标准字符位置。
汉字字符和规定了全角的英文字符及国标GB2312-80中的图形符号和特殊字符都是全角字符。一般的系统命令是不用全角字符的,只是在作文字处理时才会使用全角字符。 -
半角–指一字符占用一个标准的字符位置。
通常的英文字母、数字键、符号键都是半角的,半角的显示内码都是一个字节。在系统内部,以上三种字符是作为基本代码处理的,所以用户输入命令和参数时一般都使用半角。
2. 全角与半角各在什么情况下使用?
-
全角占两个字节,半角占一个字节。
-
半角全角主要是针对标点符号来说的,全角标点占两个字节,半角占一个字节,而不管是半角还是全角,汉字都还是要占两个字节。
在编程序的源代码中只能使用半角标点(不包括字符串内部的数据)
在不支持汉字等语言的计算机上只能使用半角标点(其实这种情况根本就不存在半角全角的概念) -
对于大多数字体来说,全角看起来比半角大,当然这不是本质区别了。
3. 全角和半角的区别
-
全角就是字母和数字等与汉字占等宽位置的字。半角就是ASCII方式的字符,在没有汉字输入法起做用的时候输入的字母数字和字符都是半角的。
-
在汉字输入法出现的时候,输入的字母数字默认为半角,但是标点则是默认为全角,可以通过鼠标点击输入法工具条上的相应按钮来改变。
4. 关于“全角”和“半角”:
- 全角:是指中GB2312-80(《信息交换用汉字编码字符集·基本集》)中的各种符号。
- 半角:是指英文件ASCII码中的各种符号。
-
-
python3 三种字符串(无前缀,前缀u,前缀b)与encode()
2018-05-30 10:40:59首先要明确,虽然有三种前缀(无前缀,前缀u,前缀b),但是字符串的类型只有两种(str,bytes),实验如下: 根据程序以及以上运行结果,发现无前缀,和前缀u,构造出来的字符串常量,是一样的。类型一样是str,...假设读者已经了解了什么叫字符集,什么叫编码,什么叫解码。
首先要明确,虽然有三种前缀(无前缀,前缀u,前缀b),但是字符串的类型只有两种(str,bytes),实验如下:
根据程序以及以上运行结果,发现无前缀,和前缀u,构造出来的字符串常量,是一样的。
类型一样是str,长度一样是3,==判断也是返回true。is判断也是返回true。
其实,这里是因为,python3中,字符串的存储方式都是以Unicode字符来存储的,所以前缀带不带u,其实都一样。
结论:字符串常量,前缀带不带u,都是一样的。
不管是utf-8,还是gbk,都可以理解为一种对应关系(若干个十六进制数<——>某个字符):
所以可以发现任何str类型的字符串,在经过encode('utf-8')后,就是通过utf-8这种编码解码方式(两种方向),将Unicode字符转换为对应的以字节方式存储的若干十六进制数。
根据如上程序以及结果,可以发现,utf-8用三个十六进制来表示一个中文字符,而gbk用二个十六进制来表示一个中文字符。
结论:encode()函数根据括号内的编码方式,把str类型的字符串转换为bytes字符串,字符对应的若干十六进制数,根据编码方式决定。
既然知道了,str实际存储的是Unicode字符,那么也可以Unicode编码来存储str,形如\u1234:
发现\u后面跟四个十六进制数,就可以代表一个Unicode字符,同样的,前缀带不带u都一样。
结论:str类型的字符串,每个字符用字符本身或者\u1234,来表示都可以,后者则是直接是Unicode编码。但打印时都是打印字符本身。
bytes字符串的组成形式,必须是十六进制数,或者ASCII字符:
提示错误:bytes只能包含ASCII字符。
在打印bytes字符串时,某些正常字符和一些转义字符可以打印出来,比如:字母数字和‘\n’换行符。别的就只能以原来的方式存在。
还可以对bytes取索引,所以这里bytes也可以用for循环来迭代了,因为也是可迭代对象。
取索引,将所在元素的数,转换为十进制数。
代码:
oath = '我爱妞' print(type(oath)) print(len(oath)) oath1 = u'我爱妞' print(type(oath1)) print(len(oath1)) print(oath==oath1) utf8 = oath.encode('utf-8') print(type(utf8)) print(len(utf8)) print(utf8) gbk = oath.encode('gbk') print(type(gbk)) print(len(gbk)) print(gbk) out = open('test.txt','w',encoding = 'utf-8') test = u'\u5220\u9664' print(len(test)) print(test) test1 = test.encode('utf-8') print(test1) print(type(test1)) out.write(test) out.close()
-
全角字符半角字符区别
2018-03-08 14:05:33全角/半角字符?A 什么是全角和半角? (1)全角--指一个字符占用两个标准字符位置。 汉字字符和规定了全角的英文字符及国标GB2312-80中的图形符号和特殊字符都是全角字符。...在系统内部,以上三种字符是作为...全角/半角字符?
A 什么是全角和半角? (1)全角--指一个字符占用两个标准字符位置。 汉字字符和规定了全角的英文字符及国标GB2312-80中的图形符号和特殊字符都是全角字符。一般的系统命令是不用全角字符的,只是在作文字处理时才会使用全角字符。 (2)半角--指一字符占用一个标准的字符位置。 通常的英文字母、数字键、符号键都是半角的,半角的显示内码都是一个字节。在系统内部,以上三种字符是作为基本代码处理的,所以用户输入命令和参数时一般都使用半角。 B 全角与半角各在什么情况下使用? 全角占两个字节,半角占一个字节。 半角全角主要是针对标点符号来说的,全角标点占两个字节,半角占一个字节,而不管是半角还是全角,汉字都还是要占两个字节。 在编程序的源代码中只能使用半角标点(不包括字符串内部的数据) 在不支持汉字等语言的计算机上只能使用半角标点(其实这种情况根本就不存在半角全角的概念) 对于大多数字体来说,全角看起来比半角大,当然这不是本质区别了。 C 全角和半角的区别 全角就是字母和数字等与汉字占等宽位置的字。半角就是ASCII方式的字符,在没有汉字输入法起做用的时候输入的字母数字和字符都是半角的。 在汉字输入法出现的时候,输入的字母数字默认为半角,但是标点则是默认为全角,可以通过鼠标点击输入法工具条上的相应按钮来改变。 D 关于“全角”和“半角”: 全角:是指中GB2312-80(《信息交换用汉字编码字符集·基本集》)中的各种符号。 半角:是指英文件ASCII码中的各种符号。
-
为什么io流的字节流适合处理影像类文件,而字符流适合读文本文件,一次讲明白
2020-07-25 21:00:11java中的io读写,主要有两种方式,字节流和字符流。其中有一条规则是字节流适合读写影像类无内容无汉字的文件,而字符流适合处理文件内容中含有中文的文件。大家是否也像我一样对这条规则有过疑问呢?网上查看io读写... -
VARCHAR与CHAR字符型数据的差异
2018-09-10 17:26:20在字符型数据中,用的最多的就是Char与Varchar两种类型。前面的是固定长度,而后面的是可变长度。现在我们需要考虑的是,在什么情况下使用Char字符型数据,什么情况下采用Varchar字符型数据。在这部分内容中,我就跟... -
数组字符串的方法
2020-06-22 19:46:20数组是一种特殊的变量,它能够一次存放一个以上的值。 (1)、数组方法 1、arr.concat() //合并两个数组 2、arr.join()//将数组转换成字符串,不写默认以','分割; 3、arr.reverse()//将数组元素顺序反转 4、arr.... -
巧破字符编码和文件处理的初探
2019-03-26 15:05:00答:我们能够了解到,我们人类能够理解的是字符的高等标识符,计算机智能识别类似于0和1组成的标识符,那么我们人类和计算机沟通,一定需要某种媒介来支持,来进行两种标识符的相互转换。例如: 1 10 -> ... -
python转换字符串编码_python字符串编码转换
2021-01-11 20:42:31首先要明确,虽然有三种前缀(无前缀,前缀u,前缀b),但是字符串的类型只有两种(str,bytes),实验如下:根据程序以及以上运行结果,发现无前缀,和前缀u,构造出来的字符串常量,是一样的。类型一样是str,长度一样... -
全角/半角字符
2021-01-25 11:21:46A 什么是全角和半角? (1)全角–指一个字符...在系统内部,以上三种字符是作为基本代码处理的,所以用户输入命令和参数时一般都使用半角。 B 全角与半角各在什么情况下使用? 全角占两个字节,半角占一个字节。 半 -
-
js 字符串截取_让JS中数据类型的所有方法都通用起来
2020-12-03 00:08:15数组可以拥有字符串的方法,字符串拥有数组的方法,而 json 同时拥有以上两种方法,是不是很神奇?其实我倒是喜欢管这种方法叫做「数据类型欺骗」。首先说一下 js 中两个比较接近的数据,一个叫数组,一个叫 json。... -
由object转化为Int类型时,字符串做为中间转化量是有区别的
2008-07-21 14:13:00int level = Integer.parseInt(operatorInfo.get(4).toString());... 以上是两种常用的转化方法,但是第二种在有些情况下行不通,会报错,页面无法正常运行,具体二者有什么区别,我暂时不清楚 以后碰到类似的问题最 -
什么是全角和半角?
2010-11-03 15:03:00什么是全角和半角? (1)全角--指一个字符占用两个标准字符位置。 汉字字符和规定了全角的英文字符及国标GB2312-80中的图形符号和特殊字符都是全角字符...在系统内部,以上三种字符是作为基本代码处理的,所以用户... -
什么是全角和半角
2007-04-07 11:52:00A 什么是全角和半角? (1)全角---指一个字符占用两个标准字符位置。 汉字字符和规定了全角的英文字符及国标GB2312-80中的图形符号和特殊字符都是全角字符。...在系统内部,以上三种字符是作为基本代码处理的... -
什么是全角和半角<转载>
2010-11-05 12:51:36A 什么是全角和半角? (1)全角---指一个字符占用两个标准字符位置。 汉字字符和规定了全角的英文字符及国标GB2312-80中的图形符号和特殊字符都是全角字符。...在系统内部,以上三种字符是作为... -
[ZT]什么是全角和半角?
2010-11-30 15:03:00什么是全角和半角? (1)全角--指一个字符占用两个标准字符位置。 汉字字符和规定了全角的英文字符及国标GB2312-80中的图形符号和特殊字符都是全角字符...在系统内部,以上三种字符是作为基本代码处理的,所以用户... -
mysql数据库专升本考什么_MySQL数据库char与varchar的区别分析及使用建议
2021-02-02 10:58:12在字符型数据中,用的最多的就是 Char与Varchar两种类型。前面的是固定长度,而后面的是可变长度。现在我们需要考虑的是,在什么情况下使用Char字符型数据,什么情况下采用 Varchar字符型数据。一、VARCHAR与CHAR... -
Symbol对象是什么
2020-12-27 09:27:49符号是一种特殊的、不可变的数据类型,它可以作为对象属性的标识符使用。符号对象是一个对的符号原始数据类型的隐式对象包装器。 <ul><li> 类型 <p></p><pre><code>javascript let sym = Symbol(); // ... -
-
-
oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串
2017-05-06 20:26:52说明:修改用户密码一般有两种方式,一种是通过命令password修改,另一种是通过语句alter user实现,如果要修改他人的密码,必须要具有相关的权限才可以 用法: 方式一 password [用户名] 方式二 alert user 用户名... -
mysql中char是多大的_MySQL数据库中char与varchar性能分析
2021-01-19 04:16:55在字符型数据中,用的最多的就是Char与Varchar两种类型。前面的是固定长度,而后面的是可变长度。现在我们需要考虑的是,在什么情况下使用Char字符型数据,什么情况下采用Varchar字符型数据。在这部分内容中,我就跟... -
什么是广义表、广义表及定义详解
2019-03-17 19:46:02但需要注意的是,以上两种数据存储形式绝不会出现在同一个数组中。例如,我们可以创建一个整形数组去存储 {1,2,3},我们也可以创建一个二维整形数组去存储 {{1,2,3},{4,5,6}},但数组不适合用来存储类似 {1,{1,2,3}}... -
写SQL时对空值的处理
2018-12-26 18:32:10在平时开发数据仓库的ETL,或者写一段简单的SQL时,如果发现某个表select出来的数据值是空的,那么,当用该字段为...以上两种情况,表象都是空,但是,在作为SQL条件进行关联和查询时,第一个需要用is null进行判断...
-
java正则表达式验证端口号_JS正则表达式验证端口范围(0-65535)
-
java正态分布随机数_正态分布的随机数
-
java logger 日志级别_Java如何设置Logger日志级别?
-
SSD2119.pdf
-
java正则表达式非贪婪_正则表达式之 贪婪与非贪婪模式详解(概述)
-
DHCP 动态主机配置服务(在Linux环境下,配置单网段或跨网段提)
-
uci1960c_a0.1.pdf
-
java与自动化的应用实例_Electorn(桌面应用)自动化测试之Java+selenium实战例子...
-
java抽奖屏_Java实现简单抽奖功能界面
-
华为1+X——网络系统建设与运维(中级)
-
TL1769S_V0.0_20060315.pdf
-
TL1771 Qualification Report_20050110.pdf
-
java正则表达式汉字数字_Java中过滤出字母、数字和中文的正则表达式
-
在咸阳定制开发微信小程序商城要注意哪些地方
-
V1FT5302FE4_QFN56_FPC_IIC_v1[1].3.pdf
-
HSD018E2N1-A Product Information V1.0.pdf
-
Windows系统管理
-
java正则表达式的替换字符_Java正则表达式,匹配、替换字符串中的占位符
-
激光雷达slam记录
-
TL1771 Initial Sequence_166_20060105.pdf