c++找字符串中的最大子字符串

作者&投稿:纵的 (若有异议请与网页底部的电邮联系)
C++实现从字符串中查找是否含有另一段字符串~

1. 使用库函数
string.h
strstr函数
函数名: strstr
功 能: 在串中查找指定字符串的第一次出现
用 法: char *strstr(char *str1, char *str2);
说明:返回指向第一次出现str2位置的指针,如果没找到则返回NULL。

调用函数,判断返回值是否等于NULL,决定是否输出
如;
char *p=".c"; //需要的子串
if(strstr(A,p)) printf("%s",A);
2. 不使用库函数
第一行是要查找的字符串
第二行是被查找句子

输出要查找的字符串在被查找句子的首个位置


#include
#include
void main()
{
int i,j,la,lb,num=0;
char c,a[120],b[4500];
while((c=getchar())!='
') a[num++]=c;a[num]='\0';
num=0;
while((c=getchar())!='
') b[num++]=c;b[num]='\0';
la=strlen(a);lb=strlen(b);
for(i=0;(lb-i)>=la;i++)
{if(b[i]==a[0])
{for(j=0;j<la;j++)
if(b[i+j]!=a[j]) break;
if(j==la) {printf("%d
",i+1);break;}
}
}
}
3. 使用指针
#include "stdio.h"
#include "conio.h"
#include "string.h"
int main()
{
char str[20]="jsdlaadf",substr[10]="sdf";
char *p=str,*q=substr;
int flag=0;
for(;*(p+strlen(substr)-1);p++)
{
for(q=substr;*p==*q&&*q;p++,q++);
if(!*q)
{
flag=1;
break;
}
}
if(flag==1) puts("accord");
else puts("not accord");
system("pause");
}

有两种方法可以使用,C++风格,或C风格。
一、C++风格。
C++的string类提供了字符串中查找另一个字符串的函数find。
其重载形式为:
string::size_type string::find(string &);
功能为在string对象中,查找参数string类型的字符串是否存在,如果存在,返回起始位置。不存在则返回 string::npos。
参考代码如下:
#include #include using namespace std;int main(){ string a="abcdefghigklmn"; string b="def"; string c="123"; string::size_type idx; idx=a.find(b);//在a中查找b. if(idx == string::npos )//不存在。 cout << "not found
"; else//存在。 cout <<"found
"; idx=a.find(c);//在a中查找c。 if(idx == string::npos )//不存在。 cout << "not found
"; else//存在。 cout <<"found
"; return 0;}二、C语言风格。
在C语言中,字符串存储为字符数组,以'\0'结束。 在C的接口中,有strstr函数,可以在字符串中查找另一个字符串。
char * strstr(const char *str1, const char *str2);
功能为在str1中查找str2,如果存在,那么返回查找到的起始指针,否则返回NULL。
参考代码:
#include #include #include using namespace std;int main(){ string a="abcdefghigklmn"; char *b="def"; char *c="123"; if(strstr(a.c_str(), b) == NULL)//在a中查找b,如果不存在, cout << "not found
";//输出结果。 else//否则存在。 cout <<"found
"; //输出结果。 if(strstr(a.c_str(), c) == NULL)//在a中查找b,如果不存在, cout << "not found
";//输出结果。 else//否则存在。 cout <<"found
"; //输出结果。 return 0;}三、注意事项。
两种方法在实际编程中都可以使用,效率几乎相同。不过相对来说使用C++的string效率更高一些,代码也更简便。

// 实际上是CPP风格的C实现
#include <stdio.h>
#include <iostream>
using namespace std;

int main()
{
        char str[1024];        //只能处理1023个字符以下的字符串,可以加大数组大小
        scanf("%s", str);
        if(str[0]=='\0')
        {
                printf("Empty string!
");
                return 0;
        }
        int bi,ci;
        for(bi=0, ci=1; str[ci]!='\0'; ci++)
        {
                if(str[ci]<str[bi])
                        continue;
                else if(str[ci]>str[bi])
                        bi = ci;
                else
                {
                        int ii = 0;
                        for(; str[ci+ii]!='\0'; ii++)
                        {
                                if(str[bi+ii]==str[ci+ii])
                                        continue;
                                else if(str[bi+ii]>str[ci+ii])
                                        break;
                                else
                                        bi = ci;
                        }
                        if(str[ci+ii]=='\0')
                                break;
                }
        }
        printf("%s
", str+bi);
        return 0;
}



excel中“InStr”的意思是什么?
1、InStr是EXCEL的VBA函数,与EXCEL函数FIND相似。2、其功能是查找指定字符串在另一字符串中最先出现的位置。1、其语法规则为:InStr([start,]string1,string2[,compare])2、其中参数Start可选,设置查找起点。3、String1必须,被搜索的字符串表达式。4、String2必须,指定要查找的字符串表达式。5、...

如何查找指定字符在字符串中出现的位置?
within_text 中的首字符是编号为 1 的字符。如果忽略 start_num,则假设其为 1。(3)本例解析 首先利用SUBSTITUTE函数将字符串中要查找的指定字符第二次出现时的字符替代成特殊字符(本例中采用”@“),然后利用FIND函数查找”@“出现的位置,即为原来字符串中指定字符第二次出现的位置。

Access中有什么函数可以找到一个字符串中第一个数字的位置
有三个函数可以实现这个功能 Mid$ (str,p,n) 从位置p开始,取字符串的n个字符,如果n去掉是取到最后 比如:Mid("南京路100号",2,2)的结果是“京路”left$(str,n) 取字符串的左边n个字符 比如:left$("南京路100号",1)的结果是“南”right$(str,n) 取字符串的...

指针1\\找出一个字符串中最大的字符并把它放在最前面,其它字符往后顺序存 ...
include <iostream> using namespace std;void Fun1(){ char c[100];cout << "请输入字符串 : ";cin >> c;int kMax = 0 ; \/\/代表最大字符的下标 char Max = c[0]; \/\/代表最大字符 for (int i = 1; i < strlen(c); i++){ if (c[i] > Max){ kMax = i ;Max...

C语言找出最长的字符串。输入5个字符串,输入其中最长的字符串。
include <stdio.h> include <string.h > int main(){ int i = 0;char s[80] = {""}, max[80] = {""};printf("输入五个字符串:\\n");scanf("%s",s);strcpy(max,s);for(i=1; i<5; i++){ scanf("%s",s);if( strcmp(max,s)<0 )strcpy(max,s);} printf("最大的...

怎样在EXCEL中提取一个字符串中的一段字符
2. 结合使用FIND函数定位起始位置:如果知道要提取的字符串中的某一部分的确切位置,可以使用FIND函数找到该位置,然后再结合MID函数进行提取。FIND函数用于查找一个字符串在另一个字符串中的位置。将FIND函数返回的数值作为MID函数的起始位置参数,可以实现动态提取。3. 使用SUBSTRING函数:除了MID函数外,...

写一个函数,其功能是:找出形参所指字符串中出现频率最高的字母(不区分...
times\\n", i + 'a', max);}第一遍循环对字母的出现次数进行统计,isalpha判断这个字符是不是字母,tolower将一个字母转换成小写,然后减去'a'来得到这个字母的下标:'a'下标为0,后面依次加1.第二遍循环确定出现次数最多的有几次。第三遍循环找出出现次数等于最大次数的有哪些字母并输出。

C语言中,读取字符串中的一个位置
include<stdio.h> include<stdlib.h> include<string.h> \/ 查找字符串首次出现的位置 charneedle[]="name";charhaystack[]="mynameiszhangwoods";printf("strpospositionis:%d",strpos(haystack,needle));paramhaystack在该字符串中进行查找 paramneedle要查找的字符串 return返回needle存在于haystack字符串...

excel用什么函数可以判断一个字符串中是否包含某些字符
详细解释:一、SEARCH函数 SEARCH函数用于在文本字符串中查找另一个字符串,并返回其位置。如果找到,则返回第一个匹配字符的位置;如果没有找到,则返回错误值。函数的基本语法是:=SEARCH。通过这个函数,可以判断特定字符或字符串是否存在于目标字符串中。例如,在A列输入文本数据,在B列使用SEARCH函数...

在vb程序设计中,如何在一个给定的字符串中查找某个字符第一次出现的...
InStr 函数 返回 Variant (Long),指定一字符串在另一字符串中最先出现的位置。语法 InStr([start, ]string1, string2[, compare])InStr 函数的语法具有下面的参数:部分说明start可选参数。为数值表达式,设置每次搜索的起点。如果省略,将从第一个字符的位置开始。如果 start 包含 Null,将发生错...

田林县18122034840: c++找字符串中的最大子字符串 -
扶疯匹多: // 实际上是CPP风格的C实现#include <stdio.h>#include <iostream> using namespace std; int main() { char str[1024]; //只能处理1023个字符以下的字符串,可以加大数组大小 scanf("%s", str); if(str[0]=='\0') { printf("Empty string!\n"); return 0;...

田林县18122034840: c++ 程序编写:编写程序,输入5个字符串,从中找出最大的字符并输出.要求使用字符指针变量实现. -
扶疯匹多: #include <stdio.h> #include <stdlib.h> #include <string.h>int main() {int i, len;char input[5][100];char * a, *b;for(i = 0;i < 5;i++)gets(input[i]); a = input[0]; for(i = 0;i < 5;i++){b = input[i];while(*b){b++;if(*b > *a)a = b;}}printf("最大的字符为:%c\n",*a);return 0; }

田林县18122034840: 用C++编程:从键盘输入10个字符串,找出其中最大者并输出. -
扶疯匹多: #include <iostream> #include <cmath> using namespace std; void max (char a[][80], char b[]) {int m, n, k, i, j = 0;for (n = 0;n < 80;n++){b[n] = a[0][n];}for (i = 1;i < 10;i++){while (a[i][j]==b[j]&&b[j]!='\0'){j=j+1;}m=b[j]-a[i][j];if(m<0) //这里改了 ...

田林县18122034840: 求C++编程 从给定的若干字符串中,查找最大的字符串和查找最长的字符串. -
扶疯匹多: #include<stdio.h>#include<string.h> void main() {char str1[]={'0'};str2[]={'0'};gets(str1);gets(str2);//如果是给定的字符串,即字符串已预先初始化,这里也可以不用在输入了) if(strcmp(str1,str2)>0) {printf("最大字符串是:"); puts(str1);} else {...

田林县18122034840: C++编程:编写求两个字符串中最大公共子字符串的函数,例如“abcdefg”,“dbcdede”的最大子串为“bcde” -
扶疯匹多: 用递归可能方便一点,看起来也清爽:#include <string>#include <iostream> string SubString(int First, int len, string str1, string str2) { string stemp(str1,First,len); if(string::npos != str2.find(stemp)) { return stemp; } else if(0 == len) { return ""; } else...

田林县18122034840: c++中在字符串sir中找出最大字符并放在第一个位置上,并将该字符前的字符往后顺序移动
扶疯匹多: <p>#include "iostream" #include "cstring" using namespace std; int main() { char str[100]={0}; char max; int i,len,pos; cout&lt;&lt;"输入一个字符串:"; cin&gt;&gt;str; len=strlen(str); max=str[0]; pos=0; for(i=1;i&lt;len;i++) //找最大字符位...

田林县18122034840: 编写函数char *search(char *cpSource, char ch),该函数在一个字符串中找到可能的最长的子字符串,该字符串是由同一字符组成的.从主函数中输入"aabbcccddddee -
扶疯匹多: #include <stdio.h> #include <malloc.h> char *search(char *cpSource,char ch) { char *findCh; char *p=cpSource; int length=0; int temp=0; int i; while(p!='\0') { if(*p!=ch) { p++; if(temp<length) { temp = length; } length=0; } else { length++; p++; } } findCh =...

田林县18122034840: 查找最大元素 C++ -
扶疯匹多: #include <iostream>#include <string.h> const N=4; const M=80; using namespace std;void main() { char str[N][M]; char (*p)[M],(*qMax)[M]; int i; cout<<"Please input 4 strings:"<<endl; for(i=0;i<4;i++) gets(str[i]); p=str; qMax=p; for(i=1;i<N;i++) if(...

田林县18122034840: 查找子字符串 C++编程
扶疯匹多: C++中有现成的函数,直接调用即可,例子如下: 1、strstr( "12345 ", "asd ") == NULL //就是没有包含 strstr( "12345 ", "asd ") != NULL //就是包含 2、strstr( "12345 ", "234 ") 返回的char* //就是包含的位置 3、str1 = "sdf "; strncpy( str, str1+1, 2 ); str结果为 "df " 就是说从str1+1的位置copy 2个字符

田林县18122034840: vc在一个大字符串中如何找一个子字符串出现的位置 并把他的位置输出出来,我是初学者,还没用过指针,请指 -
扶疯匹多: 如果是用C++ , 用string 的find()函数就行了,函数返回的是以0开始的找到子字符串的第一个字符的位置 在MFC 里面用 CString 的Find()

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网