C/C++字符串
在C中,并没有字符串这个数据类型,而是使用字符数组来保存字符串。C字符串实际上就是一个以null(‘\0’)字符结尾的字符数组,null字符表示字符串的结束。
需要注意的是:
只有以null字符结尾的字符数组才是C字符串,否则只是一般的C字符数组。
1.
C语言中, 没有字符串的数据类型,使用一个以NULL(‘\0’)字符结尾的字符数组来保存字符串。
声明:
char a[100];
//或 char p=(char )malloc(100*sizeof(char));
操作:
//字符串初始化:
char a[100]=”Hello World!”;
char *p=”Hello World!”;
//赋值: (在定义时可以用”=”进行初始化,但是以后不能用”=”对C字符串进行赋值.)
strcpy(a, “Ni Hao!”);
//获取字符串长度.(不包括 ‘\0’)
strlen(a);
printf(“%s”,a);
2.
标准 C++ 的字符串数据类型是 string 类.
申明:
string myStr;
操作:
//初始化:
string myStr=”Hello World!”;
//赋值:
myStr=”Ni Hao”;
//转化:
char* -> string
char a[]=”Hello World!”;
string b;
b=a;
//转化: string -> char*
string b=”Ni Hao”;
char a[]=”Hello World!”;
strcpy(a,b.c_str()); //string对象不能自动转化为c字符串。需要利用成员函数c_str();
//转化: 字符串->数字
int atoi(const char *nptr);
double atof(const char *nptr);
long atol(const char *nptr);
字符串函数:
串长度: int strlen(char *str)
串拷贝: char *strcpy(char *targetStr,char *orignalStr);
串连接: char *strcat(char *str1,char *str2)
串比较: int strcmp(char *str1,char *str2) //比较的是字符的ASCII码, str1>str2 返回1,相等为0
串定位: char *strchr(char *str,char ch)//找到返回字符在字符串中的位置,否则返回-1;
3.
转换
const char* 可以和string 直接转换,例如我们在上面的例子中,使用
string_replace(strinfo, “Winter”, “wende”);来代用void string_replace(string & strBig, const string & strsrc, const string &strdst)
在C语言中只有char 和 const char,为了使用起来方便,string提供了三个函数满足其要求:
const charT* c_str() const
const charT* data() const
size_type copy(charT* buf, size_type n, size_type pos = 0) const
其中:
c_str 直接返回一个以\0结尾的字符串。
data 直接以数组方式返回string的内容,其大小为size()的返回值,结尾并没有\0字符。
copy 把string的内容拷贝到buf空间中。
4.
string的函数
string 函数列表 函数名 描述
begin 得到指向字符串开头的Iterator
end 得到指向字符串结尾的Iterator
rbegin 得到指向反向字符串开头的Iterator
rend 得到指向反向字符串结尾的Iterator
size 得到字符串的大小
length 和size函数功能相同
max_size 字符串可能的最大大小
capacity 在不重新分配内存的情况下,字符串可能的大小
empty 判断是否为空
operator[] 取第几个元素,相当于数组
c_str 取得C风格的const char* 字符串
data 取得字符串内容地址
operator= 赋值操作符
reserve 预留空间
swap 交换函数
insert 插入字符
append 追加字符
push_back 追加字符
operator+= += 操作符
erase 删除字符串
clear 清空字符容器中所有内容
resize 重新分配空间
assign 和赋值操作符一样
replace 替代
copy 字符串到空间
find 查找
rfind 反向查找
find_first_of 查找包含子串中的任何字符,返回第一个位置
find_first_not_of 查找不包含子串中的任何字符,返回第一个位置
find_last_of 查找包含子串中的任何字符,返回最后一个位置
find_last_not_of 查找不包含子串中的任何字符,返回最后一个位置
substr 得到字串
compare 比较字符串
operator+ 字符串链接
operator== 判断是否相等
operator!= 判断是否不等于
operator< 判断是否小于
operator>> 从输入流中读入字符串
operator<< 字符串写入输出流
getline 从输入流中读入一行