c++第十三天(string类的使用)

22 篇文章 2 订阅
6 篇文章 0 订阅

一、string类函数接口

概念:string 是C++ 官方工程师封装的一个字符串管理类,里面提供了所有的字符串操作接口,比较,查找,删除,修改,追加.....

格式1:string 对象 = 字符串;        //把字符串赋值给对象。

格式2:string 对象1 = 对象2;  //将对象2赋值给对象1

格式3:string 对象;    对象.函数模板();   //调用函数模板实现修改字符串

      String类对象创建后,字符串一旦初始化就不能更改,因为string类中所有字符串都是常量,数据是无法更改,由于string对象的不可变,所以可以共享。对String类的任何改变,都是返回一个新的String类对象。 C++标准库中string类以类型的形式对字符串进行封装,且包含了字符序列的处理操作。

       std::string:标准中未规定需要\0作为字符串结尾。编译器在实现时既可以在结尾加\0,也可以不加。(因编译器不同)

但是,当通过c_str()或data()来把std::string转换为const char *时,会发现最后一个字符是\0。但是C++11,string字符串都是以'\0'结尾。

1、c_str 类转换 语法: const char *c_str();

//假设用户需要把string类写入文件,需要为字符串再写入 c_str()函数返回一个指向正规C字符串的指针, 内容与本字符串相同。

2、类型转换 size_type copy( char *str, size_type num, size_type index );

     // str:数组的首地址 num:需要拷贝的大小 index:从哪里开始 。

3、删除字符串 basic_string &erase( size_type index = 0, size_type num = npos );

    // index:开始位置 num:删除多少个。 

4、字符串查找 size_type find( const char *str, size_type index );

     // str:需要查找的字符串 index:从哪个位置开始查找 返回值:查找到的位置。 

5、逆向查找 size_type rfind( const char *str, size_type index );

6、字符串插入 basic_string &insert( size_type index, const char *str );

    //  index:插入的位置 str:需要插入的字符串。 

7、长度(length) 语法: size_type length(); // length()函数返回字符串的长度。 

8、字符串替换 basic_string &replace( size_type index, size_type num, const char *str );

     //  index:开始位置      num:个数         str:替换的字符串。 

9、字符串提取 basic_string substr( size_type index, size_type num = npos );

      //  index:提取的开始位置 num: 需要提取的个数。

10、字符串的拼接

有了 string 类,我们可以使用++=运算符来直接拼接字符串
     用+来拼接字符串时,运算符的两边可以都是 string 字符串,也可以是一个 string 字符串和一个C风格的字符串,还可以是一个 string 字符串和一个字符数组,或者是一个 string 字符串和一个单独的字符。

#include <iostream>
#include <string>
using namespace std;
int main(){
    string s1 = "first ";
    string s2 = "second ";
    char *s3 = "third ";
    char s4[] = "fourth ";
    char ch = '!';
    string s5 = s1 + s2;
    string s6 = s1 + s3;
    string s7 = s1 + s4;
    string s8 = s1 + ch;
    
    cout<<s5<<endl<<s6<<endl<<s7<<endl<<s8<<endl;
    return 0;
}

例子合集: 

#include<iostream>
using namespace std;

string是字符串类。
string和char*的区别?
char*是一个指针。
string是一个类,类内部封装了char*,管理这个字符串,是一个char*型的容器;

int main()
{
    string data = "hello";  将字符串"hello"赋值给data
    string data2 = "bayg";  
    string data3 = "bayebe";  
    string str1(5,'g');     打印字符'g' 3次
    string str2("good",3);  取字符串前3位
    string str3("world",2,3); 偏移字符串2位,取后面3位的字符
    string a = str3;    将str3对象的值赋值给a
    string b;
    string.assign( const basic_string &str, size_type index, size_type len );
    b.assign(data,2,2); 使用assign赋值函数赋值

    str.append()在末尾添加文本
    basic_string &append( const basic_string &str );  .就是引用
    data.append("world");

    str.at()索引第几个字符,返回字符类型,如果超出范围则报错。
    char c = str3.at(2);

    
    str.compare()比较两个字符串,相等返回0,如果str1<str2,返回小于0
(只考虑第一个不同的字符的大小,如果一个字符是a,比较的字符是b,那么就小于),反之则大于。
    因为g>e,所以compare的data2>data3,只考虑第一个不同字符的大小,和数量无关。

    cout << "比较字符串" << endl;
    if(data2.compare(data3)>0){
        cout << "data2 > data3" << endl;
    }else if(data2.compare(data3)<0){
        cout << "data2 < data3" << endl;
    }else if(data2.compare(data3)==0){
        cout << "data2 = data3" << endl;
    }

    str.copy()拷贝函数,size_type copy( char *str, size_type num, size_type index );
    char p[10];
    str2.copy(p,1,0);    原字符串.copy(拷贝到数组,拷贝数目,(偏移));可以不用偏移
    cout << p << endl;

    cout << data << endl;
    cout << str1 << endl;
    cout << str2 << endl;
    cout << str3 << endl;
    cout << a << endl;
    cout << b << endl;
    cout << c << endl;

}

二、string字符串的接口

string的接口很多,封装的接口可以实现一般数据结构的功能。

比如:链表,队列,栈等。

  • string的特性描述:

int capacity()const; //返回当前容量(即string中不必增加内存即可存放的元素个数)

int max_size()const; //返回string对象中可存放的最大字符串的长度

int size()const; //返回当前字符串的大小

int length()const; //返回当前字符串的长度

bool empty()const; //当前字符串是否为空

void resize(int len,char c);//把字符串当前大小置为len,并用字符c填充不足的部分
  • string类的输入输出操作: 

    string类重载运算符operator>>用于输入,同样重载运算符operator<<用于输出操作。 函数getline(istream &in,string &s);用于从输入流in中读取字符串到s中,以换行符'\n'分开。

  • string的赋值:

string &operator=(const string &s);//把字符串s赋给当前字符串

string &assign(const char *s);//用c类型字符串s赋值

string &assign(const char *s,int n);//用c字符串s开始的n个字符赋值

string &assign(const string &s);//把字符串s赋给当前字符串

string &assign(int n,char c);//用n个字符c赋值给当前字符串

string &assign(const string &s,int start,int n);//把字符串s中从start开始的n个字符赋给当前字符

string &assign(const_iterator first,const_itertor last); //把first和last迭代器之间的部分赋给字符串

 

  • string的连接:

string &operator+=(const string &s);//把字符串s连接到当前字符串的结尾

string &append(const char *s); //把c类型字符串s连接到当前字符串结尾

string &append(const char *s,int n);//把c类型字符串s的前n个字符连接到当前字符串结尾

string &append(const string &s); //同operator+=()

string &append(const string &s,int pos,int n);//把字符串s中从pos开始的n个字符连接到当前字符串的结尾

string &append(int n,char c); //在当前字符串结尾添加n个字符c

string &append(const_iterator first,const_iterator last);//把迭代器first和last之间的部分连接到当前字符串的结尾

 

  • string的比较:

bool operator==(const string &s1,const string &s2)const;//比较两个字符串是否相等 运算符">","<",">=","<=","!="均被重载用于字符串的比较;

int compare(const string &s) const;//比较当前字符串和s的大小

int compare(int pos, int n,const string &s)const;//比较当前字符串从pos开始的n个字符组成的字符串与s的大小

int compare(int pos, int n,const string &s,int pos2,int n2)const;//比较当前字符串从pos开始的n个字符组成的字符串与s中//pos2开始的n2个字符组成的字符串的大小

int compare(const char *s) const;

int compare(int pos, int n,const char *s) const;

int compare(int pos, int n,const char *s, int pos2) const;//compare函数在大于(>)时返回1,小于(<)时返回-1,等于(==)时返回0

 

  • string的子串:

string substr(int pos = 0,int n = npos) const;    //返回pos开始的n个字符组成的字符串

  • string的交换:

void swap(string &s2); //交换当前字符串与s2的值

注意:使用时是 str1.swap(str2);  这种格式,其他也一样。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: CSDN开发的C知道AI语言模型回答: C++中的string类有以下常用方法: 1. length():返回字符串的长度。 2. size():返回字符串的长度,与length()方法相同。 3. empty():判断字符串是否为空,如果为空则返回true,否则返回false。 4. clear():清空字符串。 5. append():在字符串末尾添加字符或字符串。 6. insert():在字符串的指定位置插入字符或字符串。 7. erase():删除字符串中的指定字符或子串。 8. replace():替换字符串中的指定字符或子串。 9. substr():返回字符串中指定位置和长度的子串。 10. find():查找字符串中是否包含指定的字符或子串,如果包含则返回其位置,否则返回string::npos。 11. rfind():从字符串末尾开始查找是否包含指定的字符或子串,如果包含则返回其位置,否则返回string::npos。 12. compare():比较两个字符串的大小,如果相等则返回,如果第一个字符串小于第二个字符串则返回负数,否则返回正数。 ### 回答2: C++中的string类是标准库中的一个类,用于处理字符串。它提供了许多方法用于字符串的操作和处理。 以下是一些常用的string类方法: 1. length():返回字符串的长度。 2. size():返回字符串的长度。 3. empty():判断字符串是否为空,如果为空返回true,否则返回false。 4. clear():清空字符串。 5. push_back():在字符串的末尾添加字符。 6. pop_back():删除字符串的最后一个字符。 7. insert():在指定位置插入字符或字符串。 8. erase():删除指定位置的字符或字符串。 9. replace():用新的字符或字符串替换指定位置的字符或字符串。 10. append():将字符或字符串添加到字符串的末尾。 11. substr():返回指定位置和长度的子字符串。 12. find():查找指定字符串在原字符串中的位置。 13. rfind():从字符串的末尾开始查找指定字符串在原字符串中的位置。 14. compare():比较两个字符串是否相等。 15. c_str():将字符串转换为C风格的字符串。 16. stoi()、stof()、stod():将字符串转换为整型、浮点型或双精度浮点型。 17. to_string():将数值转换为字符串。 除了上述方法外,string类还可以使用运算符来进行字符串的连接、比较和赋值操作,如"+"、"=="、"="等。 string类的方法非常丰富,可以帮助我们对字符串进行灵活的操作和处理。根据具体的需要,选择合适的方法可以方便地完成字符串的各种操作。 ### 回答3: C++中的string类是标准库中的一个类,用于处理字符串。它包含了许多方法,以下是一些常用的方法: 1. size()/length()方法:返回字符串的长度。 2. empty()方法:判断字符串是否为空。 3. clear()方法:清空字符串。 4. assign()方法:将一个字符串赋值给另一个字符串。 5. insert()方法:在特定位置插入字符串或字符。 6. erase()方法:删除特定位置的字符或一段字符。 7. replace()方法:用另一个字符串或字符替换特定位置的字符或一段字符。 8. substr()方法:返回特定位置的子字符串。 9. find()方法:查找特定字符或字符串在字符串中第一次出现的位置。 10. rfind()方法:查找特定字符或字符串在字符串中最后一次出现的位置。 11. compare()方法:比较两个字符串的大小。 12. c_str()方法:将字符串转换为C风格的字符串(以null字符结尾的字符数组)。 13. getline()方法:从输入流中逐行读取字符串。 14. +=运算符:将另一个字符串或字符连接到当前字符串的末尾。 这些方法可以帮助我们在C++中更方便地操作字符串,使得字符串的处理更加简单和高效。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值