校招知识点总结C++(二) string

字符串的问题现在是真的多,c++ string库很强大,但一直对里面的函数不太理解,所以这次总结下string库函数。

一、string中和其他类型的转换

  1.和C-风格的字符串之间的转换。

string str = "abc";
const char * =str.c_str()
View Code

  需要注意的是,这个返回的是const 类型,如果需要进行转换,需要c++中新出的const_cast来进行转换成非常量指针。socket中发送数据中,经常用到这个函数。

  

 const char * s = "hello,world";
char d[] = "hello,world";
string str(s);
string str1(d);
cout<<str.length()<<str1.length();
cout<< sizeof(d)<<endl;

  这个需要注意C-风格字符串和string不同的地方。C-风格多个'\0';

  2.和int、double、long、float转换。

  最开始:atoi(const char *) atol()  atof().这些函数参数都是cost char *。

  还有一个利用头文件#include<sstream>.这个用来处理空格好点。处理类型转换,差点意思。

  c++11 新增:stoi(string) stol(string).是string。

  反方向转换:to_string()函数。常用。

 

二、string 长度   成员函数。

  

string str ="afdfd";
str.length();
str.size();

 

三、string 查找 成员函数。

  1.查找子串,根据子串,返回下标。

  

string str = "hello,world";
cout<<str.find("w")<<endl;
cout<<str.rfind("w")<<endl;
cout<<str.find("l")<<endl;
cout<<str.rfind("l")<<endl;
View Code

 

  2.截取子串,根据下标,返回子串。

string  str = "hello,world";
cout<<str.substr(2,5)<<endl;
View Code

  需要注意的这个sustr返回的不是一个引用,即返回的是一个右值,不是改变str本身。

四、string 修改(不用迭代器,虽然string也是STL中,也可以用迭代器,但目前对迭代器了解并不深,为防止出错,暂时不用。)

  注意的一点,这些修改的成员函数都是返回的引用,即直接改变str,返回引用,意味着只能做左值。  

  1.erase

  

    cout<<str.erase(9)<<endl;// pos 直到最后
    cout<<str.erase(0,3)<<endl; //pos n

 

  2.insert

cout<<str.insert(1,"strat")<<endl;
cout<<str.insert(1,"strat",2)<<endl;//和replace相同

 

  3.replace

cout<<str.replace(0,1,"huya");// pos n temp
cout<<str.replace(0,1,"huya",2)<<endl;// pos n temp n1  n1代表这个替换的字符串的 字符个数
cout<<str.replace(0,str.length(),"hahahhaadfdfdaf")<<endl; //猜一下,这个我想用来实验什么
cout<<str.replace(0,str.length()+100,"hahahhaadfdfdaf")<<endl;
cout<<str.length()<<endl;
 

 

  4.append、push_back.

  

cout<<str.append("end")<<endl;
    str.push_back('l'); //注意只能添加字符,而且返回的不是引用,无法直接输出。
    cout<<str<<endl;

 

五、string 比较

 1.两个string直接比较。>=  <=  ==

 2.compare 函数。逐个字符比较,大于返回1,等于返回0,小于返回-1; 从    

  

    string str2 = "abcdef";
    string str3 = "abecdefg";
    string str4 = "adfc";
    string str5 = "abc,";
    cout<<str2.compare(str3)<<endl;
    cout<<str2.compare(str4)<<endl;
    cout<<str2.compare(str5)<<endl;

 

posted @ 2019-09-14 15:02  昔时  阅读(209)  评论(0编辑  收藏  举报