C++ 字符串最后出现的位置和取字符串左边的指定几个字符

要求构建一个函数,返回值是取一个字符在文本中最后出现的位置
比如我的文本是C:\WINDOWS\123 那么就返回11,也就是\类似于易语言的倒找文本
还有一个就是类似于易语言的取文本右边,取指定字符串右边的指定字符,并返回。。

/*

'\'在s[]中最后出现的位置是:11

t[] = 123

Press any key to continue

*/

#include <stdio.h>
#include <string.h>

// 返回ch在s[]最后出现的位置。返回0表示在s[]中没有发现字符ch
int LastPos(char s[], char ch) {
int i,pos = 0; //
for(i = 0; s[i]; ++i)
if(s[i] == ch) pos = i + 1;
return pos;
}

// 复制s[]中右边的n个字符到t[]中
char *RightStr(char s[], char t[], int n) {
int i,j,len = strlen(s);
t[0] = '\0';
if(n >= len) strcpy(t,s);
else if(n > 0 && n < len) {
i = len - n;
j = 0;
while(t[j++] = s[i++])
;
}
return t;
}

int main() {
char s[] = "C:\\WINDOWS\\123";
char t[20];
printf("'\\'在s[]中最后出现的位置是:%d\n",LastPos(s,'\\'));
printf("t[] = %s\n",RightStr(s,t,3));
return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-01-23
同学我可以告诉你是这是有模版的
string字符串
例如:
string sr1;
(15)Int P=Str1.find(“cde”)寻找字符串str1中是否含有字符“cde”,若有,p保留字符“cde”第一次出现c时的起始下标;若没有找到,p的结果为-1;

(16)IntP=Str1.rfind(“cde”)寻找字符串str1中是否含有字符“cde”,若有p保留字符“cde”的最后一次出现E的下标;若没有找到,p的结果为-1;

(17)IntP=Str1.find_first_of(“ED”)寻找字符串str1中是否含有字符“E”或‘D’,若有p保留字符“E”或‘D’第一次出现“E”或‘D的下标;若没有找到,p的结果为-1;

(18)IntP=Str1.find_last_of(“ED”)寻找字符串str1中是否含有字符“E”或‘D’,若有p保留字符“E”或‘D’最后一次出现“E”或‘D的下标;若没有找到,p的结果为-1;

(19)IntP=Str1.find_first_not_o(“ABC”)寻找字符串str1中是否含有字符除‘A’或‘B’或‘C’以外的字符,若有p保留字符“第一次出现除‘A’或‘B’或‘C’以外的字符的下标;若没有找到,p的结果为-1;

(20)IntP=Str1.find_last_not_of(“ABC”)寻找字符串str1中是否含有字符除‘A’或‘B’或‘C’以外的字符,若有,p保留最后一次出现除‘A’或‘B’或‘C’以外的字符的下标;若没有找到,p的结果为-1;

当然 这种模版找的理论上效率肯定是最慢的.......不过也慢不了多少(我以前试过 印象中比起比较高效的字符串匹配算法比如kmp和Sunday 数据量要上百万才会差几百毫秒吧.... )
相似回答