C++语法基础篇-字符串

字符串是计算机与人类沟通的重要手段

1.Ascii码

字符(指英文)在计算机当中是以AscII码存储的范围在-128~127

#include<iostream>
#include<cstring>
using namespace std;
int main(){
	for(int i=0;i<128;i++){
		printf("%d : %c\n",i,(char)i);  //本质上char类型字符在计算机中存储的仍然是int类型
										//所以char可以直接进行运算,
	}
	return 0;
}

需要记住的常用Ascii码:

  • 0~9 对应 48~57
  • A~Z 对应 65~90
  • a~z 对应 97~122

2.字符数组

2.1 字符数组初始化

/*
	字符数组初始化 
*/
#include<iostream>
#include<cstdio>
using namespace std;
int main(){
	
	char a[]={'a','b','c'};		//普通的初始化 
	char b[]={'a','b','c','\0'};	// 添加一个表示字符串结尾的字符'\0' 
	char c[]="abc"; 		//长度为4
	char d[5]="song"; //字符串长度为4,字符数组必须开 5个默认还会存'\0'  
	
	cout<<a<<" "<<endl;
	cout<<b<<" "<<endl;	
	cout<<c<<" "<<endl;   	
	cout<<d<<" "<<endl;     
	
	//字符数组的输入

	char e[100];
	scanf("%s",e); //方式一:向字符数组赋值的时候不加取地址符&,因为字符本身就是一个地址
	cin>>s; 	//方式二: 
	fgets(e,10000,stdin)  //方式三:因为前两种读入是遇到空格或回车会停止,第三种方式是直接读取一行(包含空格、回车) 
						 // 参数一:为那个数组读入,参数二:最多读入的长度,参数三:后面讲
	cin.getline(e,1000) //方式四: 读入一行,参数一:目标数组,参数二:最多读入的长度 

						   
	//为指定的某位置赋值可以 
	 scanf("%s",e+1);//从数组的第二个位置开始赋值 
	 cin>>s+1  //数组的第二个位置开始赋值 
	 
	 
	String s; 
	getline(cin,s)//String类型,读入一行 
	
	//字符数组的输出 
	printf("%s\n",e);
	puts(e)//默认存在换行符 
	
	
	return 0;
}

//字符串就是字符数组加上'\0'结束符 

2.2 字符数组常用函数

/*
	字符数组常用操作 
*/ 
#include<iostream>
#include<cstdio>
#include<cstring> 
using namespace std;
int main(){
	
	char s[100],a[100],c[100];
	scanf("%s",s);
	scanf("%s",a);
	
	//求字符串长度 strlen 
	cout<<strlen(s)<<endl;
	//比较两个字符串 strcmp 
	cout<<strcmp(s,a)<<endl;  //按照字典序比较,s>a 返回1,s=a返回0,s<a返回-1 
	//字符串的复制 
	strcpy(c,s); //将s字符串赋值给c字符串 
	cout<<c<<endl; 
	return 0;
} 

3. String 字符串

/*
	字符串String,需要引入库#include<string> 
*/

#include<iostream>
#include<cstdio>
#include<string>
using namespace std;
int main(){
	//初始化string类型字符串 
	string s1;   //定义一个默认的空字符串 
	string s2 = s1;		//s2为s1的副本 
	string s3="hello";	//s3是字面值为hello的字符串 
	string s4(10,'c');	//s4是 cccccccccc 
	
	// 字符串的输入和输出
	cin>>s1;   //string类型不能用scanf读入,但是可以使用printf输出 
	cout<<s1<<endl;
	printf("%s",s1.c_str());//调用c_str()函数,返回的是s1字符数组的首地址 
	puts(s1.c_str());//puts输出 
	
	//读入整行
	getline(cin,s1); 
	
	
	//常用函数
	//size(),返回字符串的长度 
	s1.size(); 
	//empty(),判断字符串是否为空 
	s1.empty();
	//字符串的比较,跟变量比较的方法类似 (按字典序) 
	if(s1 != s2);  
	//字符串拼接 (连接),同样也可以直接加字符(
	//默认的=两边只有要string,就全部转化为string进行拼接,字面值串起来) 
	string s5=s3+"absc" ; //输出 helloabsc    
	string s6="abc"+"def";//报错 ,前提是两边都有string类型 
	 
	//字符串遍历
	//方式一: 当作字符数组遍历
	string s="hello";
	for(int i=0;i<s.size();i++) cout<<s[i]<<endl;  
	//方式二:增强for
	for(char c : s) cout<<c<<endl; //等价:	for(auto c : s) cout<<c<<endl;   auto类型自动推导 
	
	
	   // 两个函数back():返回字符串的最后一个字符
    //    pop_back():移除字符串的最后一个字符
	
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Today不上发条

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值