大家好,又见面了,我是你们的朋友全栈君。
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″,得到不含扩展名的文件名。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/144589.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...