C++下截取字符串

std::string::substr

string substr (size_t pos = 0, size_t len = npos) const;
功能:按照条件截取字符串

参数:pos=截取起始位 

          len=截取长度



用法1:截取下标2(第3个字符)开始到字符串结尾的字符串

string str = "ABCDEFG";
string cut= str.substr(2);
最终,cut="CDEFG"。

衍生:如果str="image007.jpg",而我们想知道其文件扩展名(filename extension),那么可以这样操作:

string str = "image007.jpg";
string cut= str.substr(str.find_last_of(".")+1);
最终,cut="jpg",得到扩展名。其中,str.find_last_of(".")返回str字符串中最后一个'.'的所在下标,这里返回8(int)。

关于string::find_first_of()、string::find_first_not_of()、string::find_last_of()、string::find_last_not_of(),参考如下:

string str1 = "cup,car,person,car,booo";
string str2 = "ako";


int num_1 = str1.find_first_of(str2);//返回str1中第一个与str2的第一个字符('a')相同字符的下标 ,返回5
int num_2 = str1.find_first_not_of(str2);//返回str1中第一个与str2的第一个字符('a')不同字符的下标 ,返回0


int num_3 = str1.find_last_of(str2);//返回str1中最后一个与str2的最后一个字符('o')相同字符的下标 ,返回22
int num_4 = str1.find_last_not_of(str2);//返回str1中最后一个与str2的最后一个字符('o')不同字符的下标 ,返回19
注:如果str2中的对应字符(最后或者最前字符)不在str1中,将返回一个很大的数。



用法2:截取下标从2(第3个字符)开始截取3个字符的字符串

string str = "ABCDEFG";
string cut= str.substr(2,3);
最终,cut="CDE",即从下标为2开始向后数3位。

衍生:如果str="image007.jpg",而我们只要其文件名而不要扩展名,那么可以这样操作:

string str = "image007.jpg";
string cut= str.substr(0,str.find_last_of("."));
最终,cut="image007",得到不含扩展名的文件名。


另外,C++中string的详细操作可点击参考这里

你可能感兴趣的:(编程基础常用)