首页 > 代码库 > c++ string 之 find_first_not_of 源代码
c++ string 之 find_first_not_of 源代码
一:实现之前先说一所find_first_not_of姊妹函数()
(1)find_first_of(string &str, size_type index = 0):(find_first_of的实现如下链接:find_first_of的源代码)
查找在字符串中第一个与str中的某个字符匹配的字符,返回它的位置。搜索从index正向开始,如果没找到就返回string::npos
(2) find_first_not_of(cstring &str, size_type index = 0):
在字符串中查找第一个与str中的字符都不匹配的字符,返回它的位置。搜索从index正向开始。如果没找到就返回string::nops
(3)find_last_of(cstring &str, size_type index = 0) :
在字符串中查找最后一个与str中的某个字符匹配的字符,返回它的位置。搜索从index逆向开始。如果没找到就返回string::nops
(4)find_last_not_of(cstring &str, size_type index = 0):
在字符串中查找最后一个与str中的字符都不匹配的字符,返回它的位置。搜索从index逆向开始。如果没找到就返回string::nops
(5)总计 (3) 和(4) 由于从index的逆向开始查找的,也相当于(1)和 (2)中的查找第一个
二:手动实现find_first_of()函数
// 在字符串中查找第一个与str中的字符都不匹配的字符,返回它的位置。 //搜索从index开始。如果没找到就返回string::nops O(N^2) int MyString::find_first_not_of(const char *str,size_t index) { if(NULL == str || index >=strLength) return npos; size_t i=0,j=0; size_t tmp_len = strlen(str); for(i=index;i<strLength;i++) { for(;j<tmp_len;j++) { if(p_str[i]==str[j]) break; } if(j==tmp_len) break;// 根据跳出的内层for的条件判断,找到即结束循环 } if(i==strLength) return npos;// 未找到,// 根据跳出的内层for的条件判断,找到即结束循环 return i; } int MyString::find_first_not_of(const MyString& str,size_t index) { if(NULL == str || index >=strLength) return npos; size_t i=0,j=0; for(i=index;i<strLength;i++) { for(;j<str.strLength;j++) { if(p_str[i]==str[j]) break;// 如果相等 本轮i就无效了,进行下一轮 } if(j==str.strLength) break;// 根据跳出的内层for的条件判断,找到即结束循环 } if(i==strLength) return npos;// 未找到,// 根据跳出的内层for的条件判断,找到即结束循环 return i; } int MyString::find_first_not_of(const char ch,size_t index) { if(NULL == ch || index >=strLength) return npos; size_t i=0; for(i=index;i<strLength;i++) { if(p_str[i]!=ch)// 跟上面的略微不同,找一个不等就可以了 break; } if(i==strLength) return npos;// 未找到,// 根据跳出的内层for的条件判断,找到即结束循环 return i; }
c++ string 之 find_first_not_of 源代码
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。