C/C++学习——字符串的处理

字符数组

一、字符数组的定义
char 字符数组名[常量表达式],…;

char s[20];
char s[4]={'J','A','V','A');

二、字符串的概念
1、C++语言规定字符串是以‘\0’(ASCII的值为0)字符作为结束符的字符数组。
2、只要遇到数组元素是空字符,就表示字符串在此位置上结束。
3、由于字符串实际存放在字符数组中,所以定义字符数组时数组的长度至少为字符串长度加1(空字符也要占位);
4、字符串常量是字符串的常量形式,他是一对双引号括起来的字符序列。
5、C++总是在编译时为字符串常量自动在其后加一个空字符。

char c;
char s[10]="hello."
c='a';//正确
c="a";//错位

三、字符串的输入和输出
1、

char str[80];
cin>>str;
cout<<str;

2、使用字符串输入输出函数
(1)gets函数

char *gets(char *s);

gets函数输入一个字符串到字符数组s中。s是字符数组或指向字符数组的指针,其长度应该足够大,以便能容纳输入的字符串。

char str[80];
gets(str);//输入字符串

(2)puts函数
int puts(char *s);
puts函数输出s字符串,遇到空字符结束,输完后,再输出一个换行(’\n’)。s是字符数组或指向字符数组的指针,返回值表示输出字符的个数。
puts输出的字符不包含空字符。

char str[80]="programming";
puts(str0);//输出字符串

注意:
C++标准库提供了兼容C语言的字符串处理函数,其头文件为:string.h。

四、字符串处理函数
1、字符串复制函数strcpy

char str1[10],str2[]="hello";
strcpy(str1,str2);//复制str2到str1;

2、字符串复制函数strncpy

char str1[10],str2[]="hello";
strncpy(str1,str2,4);//复制str2的前4个字符到str1;

3、字符串连接函数strcat

char str1[10]="ABC",str2[]="123";
strcat(str1,str2);//在str1后面连接str2,str2未变化。

4、字符串连接函数strncat

char str1[10]="ABC",str2[]="12345678";
strcat(str1,str2,4);//将str2前四个字符连接到str1后面。

5、字符串的比较函数strcmp

ifstrcmp(str1,str2)==0).......
if(strcmp(str1,str2)>0)......//比较str1大于str2

6、计算字符串长度函数strlen

n=strlen("bobo");//n=4
char str[20]="pipi";
n=strlen(str);//n=4

7、字符串转换成数值函数atoi

f=atof("123.456");//f=123.456
i=atoi("-456");//i=-456;

五、字符串对象
使用string类需要将其头文件包含到程序中,

#include 

1、字符串对象的定义和初始化
定义和初始化字符串对象,与变量的方法类似。如果string对象没有初始化则一律是空字符串。需要注意的是C++字符串对象不需要NULL字符结尾。

char S1[20];//c风格字符串
string str1;//定义string对象
char S2[20]="java";//C风格字符串初始化
sring str2="java";//string对象赋值初始化
string str3("C++");//string对象直接初始化

2、字符串对象的引用
与变量类似,直接使用string对象名就表示它的引用

str1="pascal";//使用string对象。

3、字符串对象的输入和输出

cin>>str1;//输入字符串到str1对象中存放
cout<<str2;//输出str2对象中的字符串
gets(S1);//输入C风格字符串到字符数组中存放
puts(S2);//输出C风格字符串

4、字符串对象与C风格字符串的转换

str1="java";//c风格字符串可以直接赋给String
str1.c_str();//sring转换为C风格字符串,返回char指针
str1.copy(S1,n,pos);//把str1中从pos开始的n个字符复制到S1字符数组。

5、sting对象允许使用运算符进行操作,实现类似C风格字符串的处理。
复制(strcpy)
连接(strcat)
比较(strcmp)
6、字符串赋值
string对象可以使用赋值运算,其功能是字符串复制,可以将字符串常量赋给string对象。

str1="bb";//字符串常量复制到string对象中
strcpy(S1,"shangxiaoyu");//C风格字符串复制到字符数组中
str1.assign(S1,n);//将C风格字符串S1开始的n个字符赋值给str1

7、字符串连接运算

str1="12",str2="AB",str3="CD";
str1=str2+str3;
str1+=str3;

8、字符串关系运算

str1="AB",str2="CD";
str1>str2;//假
str1==str2;

9、字符串的长度

str1="ABCDEFG";
n=str1.size();n=11;
n=str1.length();n=11;
b=str1.empty();//假

其他功能查手册。
六、字符串对象数组

string  SY[5]={"Jiang","Cao","Zhang","Liu","Wei"};
char SY[5][20]={"Jiang","Cao","Zhang","Liu","Wei"};

C/C++学习——字符串的处理_第1张图片

你可能感兴趣的:(c++学习笔记)