第5章 数组和字符串处理
数组的特点:
- 数组中的每个数据元素都是相同的数据类型
- 数组是由连续的内存位置组成的
5.1 一维数组
// 一维数组定义的三种方式
数据类型 数组名[ 数组长度 ];
数据类型 数组名[ 数组长度 ] = { 值1,值2 ...};
//自动确定数组长度
数据类型 数组名[ ] = { 值1,值2 ...};
static int A[10]//默认各元素的值为0
int A[10]//各元素的值为随机数
① 数组名的命名规范与变量名命名规范一致,不要和变量重名
② 数组中下标是从0开始索引
③ 数组一经定义,数组长度就始终不变。(数组长度≥1)
④ 初值列表提供的元素个数不能超过数组长度,可以小于,剩余初始化为0.
#include<iostream>
using namespace std;
void main() {
int arr[] = {1,2,3,4};
cout<<"整个数组所占内存空间为:" << sizeof(arr) << endl;
cout<<"单个数组元素的内存空间:" << sizeof(arr[0]) << endl;
cout<<"数组元素的个数:" << sizeof(arr)/ sizeof(arr[0]) << endl;
cout << "直接打印arr1会打印出该数组的首地址:" << arr << endl;
cout << "数组中第一个元素地址:" << &arr[0] << endl;
cout << "数组中第二个元素地址:" << &arr[1] << endl;
}
① 直接打印数组名,可以查看数组所占内存的首地址
② 对数组名进行sizeof,可以获取整个数组占内存空间的大小
③ 获取数组元素个数:sizeof(arr)/ sizeof(arr[0])
// 冒泡排序小练习
int main() {
int arr[9] = { 4,2,8,0,5,7,1,3,9 };
for (int i = 0; i < 9 - 1; i++)
{
for (int j = 0; j < 9 - 1 - i; j++)
{
if (arr[j] > arr[j + 1])
{
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
for (int i = 0; i < 9; i++)
{
cout << arr[i] << endl;
}
system("pause");
return 0;
}
5.2 字符串处理
原始C采用字符数组存放字符串,其元素是一个个的字符。
字符数组定义格式:char 字符数组名[常量表达式]
① C++语言规定字符串是以’\0’(ASCII值为0)字符作为结束符的字符数组。
② 只要遇到数组元素是空字符,就表示字符串在此位置上结束。
③ 由于字符串实际存放在字符数组中,所以定义字符数组时数组的长度至少为字符串长度加1(空字符也要占位)。
④ C++总是在编译时为字符串常量自动在其后增加一个空字符。
⑤ 字面值 ‘A’ 表示的是单独字符 A ,而字符串 “A” 代表了一个包含两个字符的字符数组,分别是字母 A 和空字符。
//① 使用标准输入输出流,将整个字符串一次输入或输出。
char str[80];
cin >> str ; // 输入字符串
cout << str ; //输出字符串
//使用字符串输入输出函数
char str[80];
gets_s(str); //输入字符串
int resn = puts(str);//输出字符串,且puts输出不包含空字符,resn返回输出字符的个数
C++标准库提供了兼容C语言的字符串处理函数,其头文件为string。
字符串常用功能:
| 解释说明 | |
|---|---|
| s.erase(pos, len) | 删除从 pos 开始的 len 个字符,省略len删除pos后所有字符。 |
| s.assign(args) | 将 s 中的字符替换为 args 指定的字符,并返回指向s的引用。 |
| s.append(args) | 将 args 追加到 s ,返回一个指向 s 的引用,args 必须是双引号字符串 |
| s.replace(range, args) | 将 s 中范围为 range 内的字符替换为 args 指定的字符 |
| to_string(val) | 将数值 val 转换为 string 并返回,val 可以是任何算术类型(int、浮点型等) |
| stoi(s) | 字符串 转换为整数并返回 |
| stof(s) | 字符串 转换为浮点数并返回 |
| s.substr(pos, n) | 从索引 pos 开始,提取连续的 n 个字符,包括 pos 位置的字符 |
| reverse(s2.begin(), s2.end()) | 反转 string 定义的字符串 s2 (加头文件algorithm ) |
| strcat( s, args) | 字符串连接函数 |
| strcpy( s, args) | 字符串拷贝函数 |
| strcmp(s1 , s2) | 字符串比较函数 |
| strlen(s) | 字符串长度函数 |