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 数据量要上百万才会差几百毫秒吧.... )

C++ 字符串最后出现的位置和取字符串左边的指定几个字符是什么?
C++ 字符串最后出现的位置和取字符串左边的指定字符:\/ '\\'在s[]中最后出现的位置是:11 t[] = 123 Press any key to continue \/ 1、字符串主要用于编程,概念说明、函数解释、用法详述见正文,这里补充一点:字符串在存储上类似字符数组,所以它每一位的单个元素都是可以提取的。2、通常以串的...

c++中如何提取出一个字符串中的几个字符?
void main(){ char *str = "abdese";char e = str[3];printf("%c", e);} 字符串可以当数组用。

如何在一个字符数组中查找一个指定的字符?(c或c++)
n应该是代表循环的次数上限,这里应该是被查找的字符串(字符数组t[50])中的字符个数,所以是50 j是待查找的字符在被查找字符串中的位置,所以是j [3-1]:50 [3-2]:j

在C或C++中的寻找指定字符串的函数
C\/C++ string库(string.h)提供了几个字符串查找函数,如下:memchr 在指定内存里定位给定字符 strchr 在指定字符串里定位给定字符 strcspn 返回在字符串str1里找到字符串str2里的任意一个字符之前已查找的字符数量 strrchr 在字符串里定位给定字符最后一次出现的位置 strpbrk 在字符串str1里定位字符串st...

...并输出指定字符在字符串中出现的次数和位置
public class JudeCount{ public static void main(String[]args){ System.out.println("请输入你要判断的字符串:");Scanner s=new Scanner(System.in);String str=s.nextLine();char[]ch=str.toCharArray();Arrays.sort(ch);\/\/对数组排序 char max='a';\/\/记录出现次数最多元素 int maxcount...

Visual C++ sprintf()函数用法
\/\/把整数123 打印成一个字符串保存在s 中。sprintf(s, "%d", 123); \/\/产生"123"可以指定宽度,不足的左边补空格:sprintf(s, "%8d%8d", 123, 4567); \/\/产生:" 123 4567"当然也可以左对齐:sprintf(s, "%-8d%8d", 123, 4567); \/\/产生:"123 4567"也可以按照16 进制打印:sprintf(s, "%8x",...

简单问题 怎么取出字符串左边的5个字符
将字符串视为一个数组,对于下标 0,1,2,3,4的元素取出即可。

C++ 截取字符串,从0开始截取到我指定的某个字符串位置.
提取该字符串左边nCount个字符的子字符串,并返回一个包含这个子字符串的拷贝的CString对象。CString str1 = _T("jizhuomi");CString str2 = str1.Left(3); \/\/ str2为"jiz"你的问题就是用Find(),查找","号的索引x,然后Left(x)截取","号左边的x个字符,具体你自己看看,c的忘了好多 ...

C++学习 STL中的string常用方法以及分割数字和字母的方法
在操作字符串时,可使用`Substr(pos, n)`从指定位置提取n个字符,`S.insert(S.size(), 'S')`在字符串末尾添加字符S,`S.erase(S.size() - 5, 5)`则删除最后的5个字符,`s.append(s)`在字符串末尾添加字符S,而`s.replace(range, args)`用于指定范围内替换字符串,例如`"sss"`替换...

c++怎么提取字符串的一部分
C++的string常用截取字符串方法有很多,配合使用以下两种,基本都能满足要求:find(string strSub, npos);find_last_of(string strSub, npos);其中strSub是需要寻找的子字符串,npos为查找起始位置。找到返回子字符串首次出现的位置,否则返回-1;注:(1)find_last_of的npos为从末尾开始寻找的位置。(...

相似回答