数组与字符串

数组 a[ ]

数组是由相同类型的一组变量组成的一个有序集合。数组中的每个变量称为一个元素,所有元素共用一个变量名,就是数组的名字。数组中每个元素的序号称为下标,下标从0开始。

数组类型指的是数组元素的数据类型,可以是任意类型,同一数组的所有元素类型相同。

一个数组在内存中占用一块连续的存储空间。数组定义后,长度不能改变。

二维数组 a[ ][ ]

二维数组就是具有两个下标的数组,确定一个元素需要两个下标值,第一个下标称为行下标,第二个下标称为列下标。

初始化二维数组时可以使用分行初始化或者顺序初始化。

#include <iostream>
using namespace std;
 int main()
{
   //分行初始化,每一行的初值用大括号括起来  
	cout << "分行初始化:" << endl;
	int a1[3][4] = { {1, 2, 3, 4},{5, 6, 7, 8},{9, 10, 11, 12} };
	for (int i = 0; i < 3; i++)	//	对行循环
	{
		for (int j = 0; j < 4; j++) //	对列循环
		{
			cout << a1[i][j] << '\t';
		}
		cout << endl;
	}

    //顺序初始化,将大括号内的值依次填入二维数组的各个元素中
	cout << "顺序初始化:" << endl;
	int a2[3][4] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };
	for (int i = 0; i < 3; i++)	//	对行循环
	{
		for (int j = 0; j < 4; j++) //	对列循环
		{
			cout << a2[i][j] << '\t';
		}
		cout << endl;
	}

}

字符串

C++ 中涉及的字符串有三种

string类型的字符串。

字符数组的字符串。

字符指针的字符串。

字符数组

字符数组字符串是有'\0'(字符串结束标志)的字符数组。

//定义长度为10的字符数组,初始化字符数组的默认值是空字符'\0'
	char c[10] = {'C', ' ', 'P', 'r', 'a', 'g', 'r', 97, 'm', '!'};
//使用字符数组
	for (int i = 0; i < 10; i++)
	{
		cout << c[i];
	}
	cout << endl;

	//	字符数组的整体引用
	cout << c << endl; // 整体引用时,如果字符数组中没有字符串结束标志'\0',会出现乱码。
	c[9] = '\0';
	cout << c << endl;

//使用字符串初始化字符数组
	char c1[10] = "123456789";
	cout << "sizeof(c1):" << sizeof(c1) << endl;

//没有指定字符数组长度时,字符数组长度时字符串长度+1,多出来的1个元素用于存放字符串结束标志。
	char c2[] = "abcd";
	cout << "sizeof(c2):" << sizeof(c2) << endl;

字符串结束标志:C++规定用ASCII码为0的特殊字符(空字符'\0')作为字符串结束标志。

字符串处理函数

strlen,获取字符串的长度

	//string类型的字符串
	string s = "abc";
	cout << s << " s.length():" << s.length() << endl;

	//字符数组的长度要大于字符串的长度
	char c[20] = "Hello C++!";
	
	//计算字符串的实际长度
	int len = 0;
	while ( c[len] != '\0') len++;		
	cout << "len: " << len << endl;

	//使用strlen函数计算字符串的长度
	cout << "strlen(c): " << strlen(c) << endl;

strcpy_s,拷贝字符串

	char c1[4] = "c++";
	char c2[] = "abcde";  //c2字符数组的长度是6
	/*
		strcpy_s(目标字符串,缓冲区大小,源字符串)
		缓冲区大小要大于源字符串的长度;小于等于目标字符串的字符数组的长度。

	*/
	strcpy_s(c2, strlen(c1) + 1, c1);
	cout << "c2: " << c2 << endl;
	cout << "c2[4]: " << c2[4] << endl;

strcat_s,拼接字符串

    char c1[20] = "C++ ";
	char c2[20] = "program";

	/*
		strcat_s(目标字符串, 缓冲区大小, 源字符串);
		缓冲区大小要 大于 (源字符串长度+目标字符串长度),
		小于目标字符数组的长度
	*/
	strcat_s(c1, strlen(c1) + strlen(c2) + 1, c2);
	cout << "c1: " << c1 << endl;

strcmp,比较字符串

	    char c1[20] = "C++";
	    char c2[10] = "C++";
	/*
		strcmp(字符串1,字符串2)
		字符串1 等于 字符串2时, 返回0
		字符串1 大于 字符串2时, 返回1
		字符串1 小于 字符串2时, 返回-1
		
		两个字符串的大小是由第一个不相等的字符的ASCII码决定的,ASCII码大字符大。
	*/
	    cout << strcmp(c1, c2) << endl;

	    char c3[] = "C++a2";
	    char c4[] = "C++b1";

	    cout << strcmp(c4, c3) << endl; //	返回1
	    cout << strcmp(c3, c4) << endl; //	返回 -1

_strupr_s、_strlwr_s,转换大、小写

	char c1[] = "Hello 123#!";
	char c2[] = "Hello 123#!";
	
	//	转换小写
	_strlwr_s(c1);
	cout << c1 << endl;

	//	转换大写
	_strupr_s(c2);
	cout << c2 << endl;

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值