C++字符及字符串操作

C++中字符和字符串的操作不可忽略,即便已经掌握了许多算法和数据结构,对于数据输入处理成可操作的数据这一过程,大多是需要字符和字符串操作的


String类

1.头文件及命名空间

1
2
#include <string>
using namespace std;

2.声明与初始化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//声明
string str;
string strArray[10];
//初始化

//默认构造函数初始化为空字符串
string str;

//复制构造函数初始化
string str1="Hello";

//string(const char *s);字符指针(字符串)初始化
string str2("charPointer");

//string(char *s,int pos,int size);字符指针(字符串)指定位置初始化
string str3("charPointer",2,5);

3.操作字符串

3.1.strcpy(a,b):将b复制给a
1
2
3
4
5
6
7
8
9
10
11
12
//函数实现
char* strcpy(char* a,char* b){
assert(a!=NULL && b!=NULL);
char* aHead=a;
while(*a !='\0') *a++ = *b++;
return aHead;
}
//函数操作
char a[]="i am a student.";
char b[20];
strcpy(b,a);
cout<<b; //i am a student.

3.2.strcat(a,b):将ab连接起来
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//函数实现
char* strcat(char* a,char* b){
assert(a!=NULL && b!=NULL);
char* head=a;
while(*a !='\0') a++;
while(*b!='\0') *a++ = *b++;
*a='\0';
return head;
}
//函数操作
char a[]="i am a student.";
char b[]="YES";
strcat(a,b);
cout<<a; //i am a student.YES

3.3.strncat(a,b,n):在a后追加b的n个字符
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//函数实现
char* strncat(char* a,const char* b,int n){
assert(a!=NULL && b!=NULL);
char* head=a;
while(*a !='\0') a++;
while(n-- && *b!='\0') *a++ = *b++;
*a='\0';
return head;
}
//函数操作
char a[]="i am a student.";
char b[]="YES";
strncat(a,b,2);
cout<<a; //i am a student.YES

3.4.strcmp(a,b):比较ab字符串,相等返回0、a\b返回正数