string类
string类
头文件:#include<string>
名称空间:using namespace std;
初始化:
string Str;
String类的构造函数和析构函数如下:
- string s(str) //拷贝构造函数 生成str的复制品
- string s(str,stridx) //将字符串str内“始于位置stridx”的部分当作字符串的初值
- string s(str,stridx,strlen) //将字符串str内“始于stridx且长度顶多strlen”的部分作为字符串的初值
- string s(cstr) //将C字符串作为s的初值
- string s(chars,chars_len) //将C字符串前chars_len个字符作为字符串s的初值。
- string s(num,c) //生成一个字符串,包含num个c字符
- string s(beg,end) //以区间beg;end(不包含end)内的字符作为字符串s的初值
string类操作
- swap() //交换两个字符串的内容
- +=,append(),push_back() //在尾部添加字符
- insert() //插入字符
- erase() //删除字符
- replace() //替换字符
- empty() //判断字符串是否为空
- [ ], at() //存取单一字符
- >>,getline() //从stream读取某值
- copy() //将某值赋值为一个C_string
- c_str() //将内容以C_string返回
- data() //将内容以字符数组形式返回
- substr() //返回某个子字符串
string类与字符串数组的转换
C++提供的由C++字符串得到对应的C_string的方法是使用data()、c_str()和copy(),其中,data()以字符数组的形式返回字符串内容,但并不添加’\0’。c_str()返回一个以‘\0’结尾的字符数组,而copy()则把字符串的内容复制或写入既有的c_string或字符数组内。C++字符串并不以’\0’结尾。
将string类型转换为字符数组
#include<cstdlib> #include<iostream> #include<cstdio> #include<string> #include<cstring> using namespace std; int main() { string s("123456.1"); char arr[]; cout<<s.data()<<endl;//1.返回不带'\0' 的字符数组 123456.1 cout<<s.c_str()<<endl;//2.返回带 '\0'的字符数组 123456.1 s.copy(arr, );//3.回不带'\0' 的字符数组 arr[] = '\0';//不带 '\0' 输出堆栈中的垃圾 cout<<arr<<endl;//123456.1 //转数字 printf("%f\n",atof(s.data())); //123456.100000 printf("%f\n",atof(s.c_str()));//同上 printf("%f\n",atof(arr));//同上 cout<<strlen(arr)<<endl;// cout<<strlen(s.data())<<endl;//同上 cout<<strlen(s.c_str())<<endl;//同上 return ; }
字符数组转化成string类型
char ch [] = "ABCDEFG";
string str(ch);//也可string str = ch;
或者
char ch [] = "ABCDEFG";
string str;
str = ch;//在原有基础上添加可以用str += ch;
提取子串:
substr(),形式如下:
s.substr();//返回s的全部内容
s.substr(11);//从索引11往后的子串
s.substr(5,6);//从索引5开始6个字符
把两个字符串结合起来的函数是+。