新浪博客

c++提取字符串特定字符前后的字符串

2017-06-01 11:20阅读:
本文原创,如需转载,请添加本文链接! 近期在利用C++和opencv实现HOG+SVM进行行人检测的项目,在其中保存图像时,想要利用原始图像名进行保存(即a344.bmp图像,想利用a344作为新的图像名字的一部分进行标记保存),此时需要提取特定字符‘.’前的字符串,为此,查了很多资料,相应的回去了三个函数的用法,记录下来,分享给大家,同时也进一步加强记忆:
void StringExtract( string str1, char chr)
{
string pstr1,afstr1;
char* charp = strchr(&str1[0], chr); //查找到字符chr的位置
size_t NameLen = charp - &str1[0]; //字符chr前的字符串长度
pstr1=str1.substr(0, NameLen); //字符chr前的字符串
afstr1=charp+1;//字符chr后的字符串
}
三个函数:
strchr函数:
原型:
extern char *strchr(char *str,char character) 参数:str为一个char的指针,即一个字符串的首地址,character为一个待查找字符。
所在库名:#include
函数功能:从字符串str中寻找字符character第一次出现的位置。
返回说明:返回指向第一次出现字符character位置的指针,如果没找到则返回NULL。
st
rstr函数:
原型:extern char *strstr(char *str1, char *str2);
参数说明:请参考strchr函数
功能:从字符串str1中查找是否有字符串str2, 如果有,从str1中的str2位置起,返回str1的指针,如果没有,返回null。
返回值:返回该位置的指针,如找不到,返回空指针。
substr函数
2种用法:
string sub1 = s.substr(3); //只有一个数字3表示从下标为3开始一直到结尾
string sub2 = s.substr(3, 5); //从下标为3开始截取长度为5位

我的更多文章

下载客户端阅读体验更佳

APP专享