概述
字符串是编程中很重要的一种变量类型,除了整数或浮点数之外,其余的都属于字符串。
这节课蒟蒻君就来为大家详解字符数组与字符串。
字符数组
创建
字符数组可以一个一个字符地创建,也可以直接用字符串的形式。
注意: 字符数组的最后一位是’\0’,所以长度要比定义的多一位。
#include <bits/stdc++.h>
using namespace std;
// 你懂的
char s1[18] = {'d', 'i', 'a', 'n',
'z', 'a', 'n',
'j', 'i', 'a',
'g', 'u', 'a', 'n',
'z', 'h', 'u'};
char s2[] = {"dianzanjiaguanzhu"};
int main() {
return 0;
}
使用(常用函数)
- strcpy(a(char数组), b(char数组))
将a赋值为b。 - strcat(a(char数组), b(char数组))
将b连到a的后面。 - strcmp(a(char数组), b(char数组))
若a < b, 返回-1;
若a == b, 返回0;
若a > b, 返回1。 - strchr(a(char数组), b(char))
返回指向a中b第一次出现位置的指针。 - strstr(a(char数组), b(char数组))
返回指向a中b第一次出现位置的指针。 - strlen(a(char数组))
返回a的长度。
实例
#include <bits/stdc++.h>
using namespace std;
// 系统提示:你懂的
char a[] = {"dianzan"};
char b[] = {"guanzhu"};
char c[8];
int main() {
// 将c赋值为a
strcpy(c, a);
cout << c << '\n';
// 将b连到a后面
strcat(a, b);
cout << a << '\n';
// 求出a的长度
cout << strlen(a) << '\n';
return 0;
}
练习:洛谷P1015回文串
字符串
创建
#include <bits/stdc++.h>
using namespace std;
string s = "dianzanjiaguanzhu";
int main() {
return 0;
}
使用(常用函数)
- s.assign(a(string))
s = a。 - s.assign(a(string), n(int))
s = a的前n位。 - s.assign(a(string), n(int), m(int))
s = a从第n - 1开始连续的m位。 - s.assign(n(int), ch(char))
s = n个ch。 - s.length()
s的长度。 - s.size()
也是s的长度。 - s.capacity()
s不加内存的话还能存多少字符。 - s.resize(n(int))
将s的长度固定为n,如果n < s.size(),多余的部分都是’\0’。 - s.resize(n(int), ch(char))
将s的长度固定为n,如果n < s.size(),多余的部分都是c。 - s.reserve(n(int))
将s的长度固定为n,多余部分忽略。 - s.swap(t(string))
将s和t交换。 - s.push_back(ch(char))
在s的末尾添加一个ch。 - s.append(t(string))
在s的末尾添加一个t。 - s.insert(n(int), t(string))
在s[n]后面插入一个t。 - s.erase(n(int))
删除s[n]。 - s.erase(n(int), m(int))
删除s[n]到s[n + m - 1](即删除m个)。 - s.replace(n(int), m(int), t(string))
将s[n]到s[n + m - 1]替换为t。 - s.empty()
s是否为空。
实例
#include <bits/stdc++.h>
using namespace std;
string s = "dianzan";
string t = "guanzhuaaa";
string a = "jia";
int main() {
// 输出s的长度
cout << s.size() << '\n';
// 输出t的长度
cout << t.length() << '\n';
// 将t插入到s的后面
s.append(t);
cout << s << '\n';
// 在s[6]后面加上"jia"
s.insert(6, a);
cout << s << '\n';
// 删除s的最后三个字符
s.erase(17, 3);
cout << s << '\n';
return 0;
}
练习:洛谷P1032字串变换
Goodbye~