字符串–char
—是以空字符结尾的一系列字符;
声明和初始化:
//1
char arr[] = {'H', 'e', 'l', 'l', 'o', '\0'};
//2
//char *arr = "hello";//const char* 不能赋值给char*
const char *arr = "hello";
char arr[] = "hello";//6
//相比之下,方式1需要手动在末尾加空字符;方式2会自动在末尾补空字符;
相关操作函数:
函数 | 作用 |
---|---|
strcpy(s1,s2) | 复制字符串 s2 到字符串 s1 |
strcat(s1,s2) | 将字符串 s2 连接字符串 s1 的末尾 |
strlen(s1) | 返回字符串 s1 的长度 |
strcmp(s1,s2) | 返回s1与s2的比较结果 |
strchr(s1,c2) | 返回一个指针,指向字符串s1中字符c2相关操作函数的第一次出现的位置 |
strstr(s1,s2) | 返回一个指针,指向字符串s1中s2的第一次出现的位置 |
string类
—必须在头文件中包含string;使用时std::string
,或者using namespace std;
//声明和初始化:
string s1;
string s2(s1);
string s3("hello");
string s4 = "hello";
string s5(n,'h');
//操作函数
string s = "hello";
s.empty();//判断s是否为空?
s.size();//返回s的大小;
s[2];
string s6 = s1+s2;
s1>s2; //< > <= >= ==
详细介绍string
—本质是类,封装了许多方法:
构造函数:
string();
string(const char *s);
string(const string &str);
string(int n,char c);
赋值操作:
string& operator=(const char* c);
string& operator=(const string&s);
string& assign(const char *c);
string& assign(const char *s,int n);
string& assign(const string &s);
string& assign(int n,char c);
拼接操作 :
string& operator+=(const char* str);
string& operator+=(const char c);
string& operator+=(const char *s);
string& append(const char *s);
string& append(const char *s ,int n);
string& append(const string *s);
string& append(const string &s,int pos,int n)//将字符串s的从pos开始的n个字符拼接;
查找替换操作:
//查找
int find(const string &str,int pos = 0) const;//从pos处开始查找str第一次出现的位置
int find(char *s,int pos = 0) const;
int find(const char*s,int pos = 0,int n) const;//从pos处开始查找s的前n个字符第一次出现的位置
int find(const char c,int pos = 0)const;
int rfind(const string &str,int pos = npos) const;//从pos处开始查找str最后一次出现的位置
int rfind(char *s,int pos = npos) const;
int rfind(const char*s,int pos = npos,int n) const;//从pos处开始查找s的前n个字符最后一次出现的位置
int rfind(const char c,int pos = npos)const;
//若是没有找到就会返回string::npos 即 s.npos
//替换
string& replace(int pos,int n,const string &str);//替换从pos开始的n个字符为str前n个字符;
string& replace(int pos,int n,const char *s);
比较操作:
//返回值:-1--- < ;1--- > ;0--- ==
int compare(const string &s)const;
int compare(const char *s)const;
字符获取操作:
char& operator[](int n);
char& at(int n);
插入删除操作:
string& insert(int pos,const char * s);
string& insert(int pos,const string &str);
string& insert(int pos,int n,char c);
string& erase(int pos,int n = npos);
获取字串操作:
string substr(int pos = 0,int n = npos)const
字符串类型
string //---上面介绍
char* //--- 指向字符串的指针(指向字符串的首个字母)
const char*// ---该声明指出,指针指向的是一个const char*类型,即不能通过当前的指针对字符串的内容作出修改,但可以修改指针指向
char[] //---是一个char型数组,也是该数组首元素的地址,是常量,其值不可以改变 ---char* const 类型
char* 和 char[] 区别
char* str = "hello";//会报错
/*
首先声明一个char*变量;
其次在内存中的文字常量区中开辟了一个空间存储字符串常量”hello”
最后返回这个区域的地址,作为值,赋给这个字符指针变量a
*/
//上述中,“hello”是 const char* 是不能修改的,若执行赋值等操作可能会报错;
//规范使用
const char* str = "hello";//保证意外赋值语句不会通过编译
char str[] = "hello";
/*
首先声明一个char 型的数组,
其次为该数组“赋值”,即将”hello”的每一个字符分别赋值给数组的每一个元素
*/
//说这么多,工作中还是使用string方便。