暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

C++笔记 | 字符串

chkl 2025-07-04
70

字符数组

字符数组是存储字符型数据的数组。
字符型数组定义: char a[5]; 表示定义字符型数组a,有a[0]-a[4] 5个可用的空间
字符型数组初始化: char a[5]={‘a’,’b’,’c’,’d’,’e’};

字符串

  1. 字符串常量的定义:
    用双引号括起来的0个或多个字符组成的序列,比如:

  2. 字符串结尾的标志:
    在内存中存储的形式,以‘\0’结束,例如,将字符串hellow存储到数组中:

  3. 字符串的定义和初始化:
    image.png
    4.字符串的输入
    (1)不含空格的输入
    使用for循环输入
    cin>>数组名;
    (2)含空格的输入
    gets(数组名);
    5.字符串的输出
    使用for循环输出
    cout<<数组名;
    puts(数组名);
    输入一个字符串(可包含空格)统计组成字符串各类型的个数,并输出所有特殊字符。
    [样例输入] abSD F12¥#% v
    [样例输出]
    ¥ # %
    大写:3
    小写:3
    数字:2 空格:2

#include<iostream>
using namespace std;
int main()
{
// 第一步:定义字符数组存放字符串,定义四个变量分别来统计大写 ,小写,数字和空格四种类型的个数,并输入字符串。
  char a[20];
  int d=0,x=0,s=0,k=0,i=0;
  gets(a);
  // 第二步:在组成字符不为结尾标志\0的情况下进行循环判断,每个字符属于是什么类型,则该类型统计+1
  while(a[i]!='\0')
  {
    if(a[i]>='A' && a[i]<='Z') d++; 
	else if(a[i]>='a' && a[i]<='z') x++; 
	else if(a[i]>='0' && a[i]<='9') s++; 
	else if(a[i]==' ') k++; 
	else cout<<a[i]<<" ";
  	i++;
  }
  // 第三步: 输出各类型的个数
  cout<<"大写:"<<d<<endl<<"小写:"<<x<<endl<<"数字:"<<s<<endl<<"空格:"<<k; 
  return 0;
}

字符串专用的处理函数

  1. strlen() 函数
    【作用】用于计算字符串的长度(不含\0)
    【格式】strlen(字符数组名);
    输入一串内容(长度不超过108 ),反向输出。
    [样例输入]12345
    [样例输出]54321
#include<iostream>
using namespace std;
int main()
{
  char a[101];
  int n,i;c
  in >> a;
  n=strlen(a);
  for(i=n-1; i>=0; i--)
   {
   	cout << a[i];
   }
  return 0;
}

2.strcat( )函数
【作用】将b字符串连接到a字符串的后面 (因此a字符串要足够大)
【格式】strcat(a, b)

  #include <iostream>
  #include <cstring>
  using namespace std;
  int main( )
  {
    char a[20] = "Hello";
    char b[6] =“world";
    cout<<strcat(a,b)<< endl;
    return 0;
  }

3.strcpy( )函数
【作用】将b字符串复制到a里,包含’\0’
【格式】strcpy(a, b)

#include <iostream>
#include <cstring>
using namespace std;
int main ()
{
  char a[20] =“Hello”;
  char b[6] =“world”;
  cout << strcpy(a,b) << endl;
  return 0;
}

4.strcmp( )函数
【作用】比较两个字符串大小
【格式】strcmp(a, b)
0:代表相等
1:代表a字符串大于b字符串
-1:代表a字符串小于b字符串

#include <iostream>
#include <cstring>
using namespace std;
int main( )
{
  char a[20] =”Hellow”;
  char b[6] =“world';
  cout<<strcmp(a,b)<<endl;
  return 0;
}

字符串翻转

输入一个句子(一行),将句子中的每一个单词翻转后输出。
输入:只有一行,为一个字符串,不超过500个字符。单词之间以空格隔开。
输出:翻转每一个单词后的字符串,单词之间的空格需与原文-致。
[样例输入] hello world
[样例输出] olleh dlrow

// 第一步:定义字符型数组a ,存储输入的字符串,定义整型变量lena, start, count,分别表示
字符串的长度,单词翻转开始的位置, 对需要输出空格的位置进行标记,定义循环变量i,j,k,输
入含空格的字符串并计算字符串的长度;
char a[500];
int len,i,start = 0,count = e,j,k = 0;
gets(a);
len = strlen(a);
// 第二步:使用for循环对字符串进行遍历,如果遇到空格或者字符串的最后-个单词 ;使用if语句进行判断,
如果是单词中间的空格,则从空格的前一个开始倒序输出, 如果是字符串的的最后一个字母,则从当前字母
开始倒序输出。
for(i=0;i<len;i++){
	if(a[i] = =‘ ’|| i = = len-1){
		count++;  //标记需要输出空格
		if(i == len-1) //确定开始倒序输出的位置
   			k =i;
		else
  		 	k =i-1; }
		//从单词的最后一个字母倒序输出
		for(j = k; j >= start; j--){
			cout << a[j];}
	}
	if(count == 1){ 
		//判断输出空格
		cout<<"";
		count =0;
	}
	start = i+1; //下一个单词从空格后的位置开始
}
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论