C++字符串

C++字符串,第1张

C++/字符串 小结: 一.字符

1.常用ASCII值:
(1)‘A’- 'Z’是65 ~ 90
(2)‘a’ - 'z’是97 - 122
(3)0 - 9是 48 - 57
(4)a与A相差32

2.字符可以参与运算,运算时会将其当做整数。
计算时用的都是整数,只有在输出的时候才是一个字符。

二.字符串与字符串数组

1 .printf 输出字符串:%s,例如printf("%sn", str);
等价于puts(s);(包括换行符)

2 .字符串就是字符数组加上结束符’’,因此可以使用字符串来初始化字符数组。
【注意】由于每个字符数组结尾含一个’’字符,字符数组的长度至少要比字符串的长度多 1

3 .输入字符串数组:
char s[100];
(1)scanf("%s", s);//读入整个数组不加&,s数组名本身就是指针
(2)scanf("%s", &s[1]);//此时s[1]是一个变量,要加&
(3)cin >> s + 1;从下标1开始读入
【区分普通数组与字符串数组】:scanf 不能直接读入整数数组,可以读入字符串数组

4 .输出:
char a1[] = {'A', 'B', 'C'};
char a2[] = "ABCD";
cout << a1 << endl; //从A开始输出
cout << a2 + 1 << endl; //从B开始输出
cout << a3 + 2 << endl; //从C开始输出

5 . 字符数组的输入输出:
cin >> str; // 输入字符串时,遇到空格、回车、结束符会停止
cout << str << endl; // 输出字符串时,遇到空格或者回车不会停止,遇到’’时停止

6 .读入一行:
(1)字符串类型:
char s[100];
fgets(s, 100, stdin);//100表示最多读入的字符数,读入包括空格
(2)字符串类型:
char s[100];
cin. getline(s, 100);//读到空格会停止
(3)string类型:
string s;
getlines(cin, s);//读入包括空格

7 .strlen(str):求字符串长度(只计算数组中的字符串元素,不计入其中)

8 .strcpy(s1, s2)把后一个数组中的元素复制给前一个

9 .strcmp(a, b)按字典序比较两个字符串的大小
返回值:a < b返回-1;a == b返回0;a > b返回1

10 .遍历字符串数组中的每个字符:
(1)for(int i = 0; i < strlen(s); i ++ ) cout << s[i] << endl;
【注意】:strlen/strcmp/strcpy都需要把整个字符串循环一遍,因此以上写法实际上是两重循环。
(2)for(int i = 0, len = strlen(s); i < len; i ++ ) cout << s[i] << endl;此写法更高效。

三.标准库类型string,可变长的字符序列(字符串)

1 .string的定义和初始化:
(1)string s1; —> // 默认初始化,s1是一个空字符串
(2)string s2 = s1; —> // s2是s1的副本,注意s2只是与s1的值相同,并不指向同一段地址
(3)string s3 = "hiya"; —> // s3是该字符串字面值的副本
(4)string s4(10, 'c'); —> // s4的内容是: “cccccccccc”

2 .string的读写:
(1)string不能用scanf读入,可以用printf输出,例如:
string s1[100];
printf("%sn", s1.c_str() );或puts( s1.c_str() );
(2)string可以用cin读入,cout输出

3 .s.size( ) —> O(1) ; strlen( ) —> O(n)

4 .两个string对象可以相加,字面值和string也可以相加
【注意】:当把string对象和字符字面值及字符串字面值混在一条语句中使用时,必须确保每个加法运算符的两侧的运算对象至少有一个是string:

string s4 = s1 + ", "; // 正确:把一个string对象和有一个字面值相加
string s5 = "hello" + ","; // 错误:两个运算对象都不是string

string s6 = s1 + "," + "world"; // 正确,每个加法运算都有一个运算符是string
string s7 = "hello" + "," + s2; // 错误:不能把字面值直接相加,运算是从左到右进行的

5 .可以将string对象当成字符数组来处理,或者使用基于范围的for语句
范围遍历(遍历某个string):
string s = "hello world";
for (char c: s) cout << c << endl;// for(类型 遍历变量 字符串)
for (char &c: s) c = 'a';//将所有字符替换成‘a’

6 .string里的每个字符都是char类型

7 .string的empty和size *** 作
string s1, s2 = "abc";
(1)empty返回的是bool值,空返回1,非空返回0
cout << s1.empty() << endl;
cout << s2.empty() << endl;
(2)size是无符号整数,因此 s.size() <= -1一定成立
cout << s2.size() << endl;

【补充】
puts(str)函数:
(1)用来输出字符串并换行
(2)str是字符串数组或字符串指针
(3)可以直接将字符串写入()
(4)包含在头文件cstdio中

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5719117.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存