string类

string类

头文件:#include<string>

名称空间:using namespace std;

初始化:

string Str;

String类的构造函数和析构函数如下:

  1. string s(str) //拷贝构造函数 生成str的复制品
  2. string s(str,stridx) //将字符串str内“始于位置stridx”的部分当作字符串的初值
  3. string s(str,stridx,strlen) //将字符串str内“始于stridx且长度顶多strlen”的部分作为字符串的初值
  4. string s(cstr) //将C字符串作为s的初值
  5. string s(chars,chars_len) //将C字符串前chars_len个字符作为字符串s的初值。
  6. string s(num,c) //生成一个字符串,包含num个c字符
  7. string s(beg,end) //以区间beg;end(不包含end)内的字符作为字符串s的初值

string类操作

  1. swap()   //交换两个字符串的内容
  2. +=,append(),push_back() //在尾部添加字符
  3. insert() //插入字符
  4. erase() //删除字符
  5. replace() //替换字符
  6. empty()  //判断字符串是否为空
  7. [ ], at() //存取单一字符
  8. >>,getline() //从stream读取某值
  9. copy() //将某值赋值为一个C_string
  10. c_str() //将内容以C_string返回
  11. data() //将内容以字符数组形式返回
  12. 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个字符

把两个字符串结合起来的函数是+。

05-18 19:01