c++ substr(C++字符串substr在母字符串str中出现的次数)

:暂无数据 2026-10-31 21:40:06 :2

c++ substr(C++字符串substr在母字符串str中出现的次数)

其实c++ substr的问题并不复杂,但是又很多的朋友都不太了解C++字符串substr在母字符串str中出现的次数,因此呢,今天小编就来为大家分享c++ substr的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

本文目录

C++字符串substr在母字符串str中出现的次数

(1)
int func(char *str, char *substr)
{
int count = 0;
char *cur = substr;

while (*str != ’\0’)
{
if (*str == *cur)
{
while (*cur != ’\0’)
{
if (*cur++ == *str++)
continue;
else
break;
}
if (*cur == ’\0’)
count++;
cur = substr;
}
else
{
str++;
}
}
return count;
}

c++ substr问题

第9行: str=’0’; 这句话不应该这样写,string 是一个对象,应该使用push_back方法追加字符,直接用数组的方式,有可能造成内存越界导致崩溃,然而即使不越界,也会为你后面使用substr埋下祸根。

之所以用substr函数不能得到正确输出,正是因为你是用了直接操纵数组的方式追加字符0,导致字符串string这个对象的长度参数等没有正确更新,使用substr的时候,这个对象的字符内容实际上没有追加正常,取子串的时候仍然没有追加0. 你用循环的方式能取得正确的结果,是因为完全脱离了string的对象合法操作,直接操纵了数据。所以恰好得到了正确的结果,我可以说这是“侥幸”,因为直接操纵数组是不安全的,也背离了原来使用string对象的初衷。

我建议正确的程序应该这样修改:

第9行,追加字符0的操作应该写为 str.push_back(’0’);

第11-17行,输出处理后的字符串,写为

    for(int i=0;i《=x;i++)
    {
      string sub=str.substr(i*8,8);
      if (!sub.empty()) cout《《sub《《endl; //控制不要输出空字符串
    }

完整的程序清单:

#include 《iostream》
#include 《string》
using namespace std;
void chuli (string str,int x,int y,int len)
{
    if(y!=0)
    {
      for(int i=0;i《8-y;i++)
         str.push_back(’0’);
    }
    for(int i=0;i《=x;i++)
    {
      string sub=str.substr(i*8,8);
      if(!sub.empty()) cout《《sub《《endl;
    }
}
int main()
{
    string s1,s2;
    while(cin》》s1)
    {
    cin》》s2;
        int a1,a2,b1,b2,n1,n2;
        n1=s1.size();n2=s2.size();
        a1=n1/8;a2=n1%8;
        b1=n2/8;b2=n2%8;
        chuli(s1,a1,a2,n1);
        chuli(s2,b1,b2,n2);
    }
  return 0;
}

运行通过

c++ substr的用法问题

下面给出解释:
substr 方法
返回一个从指定位置开始,并具有指定长度的子字符串。
参数
start
必选。所需的子字符串的起始位置。字符串中第一个字符的索引为 0。
length
可选项。返回的子字符串中包含的字符数。
备注
如果 length 为 0 或负数,将返回一个空字符串。如果没有指定该参数,则子字符串将延续到字符串的结尾。
看了上面这些应该就会明白了!!

关于c++ substr,C++字符串substr在母字符串str中出现的次数的介绍到此结束,希望对大家有所帮助。

c++ substr(C++字符串substr在母字符串str中出现的次数)

本文编辑:admin

更多文章:


phpcms下载站(有没有phpcms v9的火车头采集入口)

phpcms下载站(有没有phpcms v9的火车头采集入口)

这篇文章给大家聊聊关于phpcms下载站,以及有没有phpcms v9的火车头采集入口对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

2026年11月3日 15:10

十字路口红绿灯plc程序梯形图(简易欧姆龙PLC十字路口红绿灯梯形图)

十字路口红绿灯plc程序梯形图(简易欧姆龙PLC十字路口红绿灯梯形图)

这篇文章给大家聊聊关于十字路口红绿灯plc程序梯形图,以及简易欧姆龙PLC十字路口红绿灯梯形图对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

2026年11月3日 14:50

js压缩图片最低能压缩多百分之多少?把vars.js压缩为vars.rar压缩文件怎么操作

js压缩图片最低能压缩多百分之多少?把vars.js压缩为vars.rar压缩文件怎么操作

本篇文章给大家谈谈js压缩,以及js压缩图片最低能压缩多百分之多少对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2026年11月3日 11:10

lseek和fseek(read pread write pwrite fseek lseek是同一类函数吗)

lseek和fseek(read pread write pwrite fseek lseek是同一类函数吗)

其实lseek和fseek的问题并不复杂,但是又很多的朋友都不太了解read pread write pwrite fseek lseek是同一类函数吗,因此呢,今天小编就来为大家分享lseek和fseek的一些知识,希望可以帮助到大家,下

2026年11月3日 08:30

直线滑块图片(滑块运动简图怎么画)

直线滑块图片(滑块运动简图怎么画)

大家好,如果您还对直线滑块图片不太了解,没有关系,今天就由本站为大家分享直线滑块图片的知识,包括滑块运动简图怎么画的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

2026年11月3日 06:40

手机网页打不开怎么修复(手机上网打不开怎么办)

手机网页打不开怎么修复(手机上网打不开怎么办)

“手机网页打不开怎么修复”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看手机网页打不开怎么修复(手机上网打不开怎么办)!

2026年11月3日 06:30

hesitation(hesitation是什么意思)

hesitation(hesitation是什么意思)

各位老铁们好,相信很多人对hesitation都不是特别的了解,因此呢,今天就来为大家分享下关于hesitation以及hesitation是什么意思的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

2026年11月3日 06:10

字体大小在哪里调整(电脑字体大小在哪里调调电脑字体大小的方法)

字体大小在哪里调整(电脑字体大小在哪里调调电脑字体大小的方法)

其实字体大小在哪里调整的问题并不复杂,但是又很多的朋友都不太了解电脑字体大小在哪里调调电脑字体大小的方法,因此呢,今天小编就来为大家分享字体大小在哪里调整的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年11月3日 04:40

网页页面设计的技巧有哪些?急求,jsp采用框架技术设计页面,如何写代码才能实现点击左侧框架内的链接,右侧框架内显示相应网页呢

网页页面设计的技巧有哪些?急求,jsp采用框架技术设计页面,如何写代码才能实现点击左侧框架内的链接,右侧框架内显示相应网页呢

其实设计页面的问题并不复杂,但是又很多的朋友都不太了解网页页面设计的技巧有哪些,因此呢,今天小编就来为大家分享设计页面的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年11月3日 03:00

selection是什么品牌(selection unique是什么葡萄酒)

selection是什么品牌(selection unique是什么葡萄酒)

其实selection是什么品牌的问题并不复杂,但是又很多的朋友都不太了解selection unique是什么葡萄酒,因此呢,今天小编就来为大家分享selection是什么品牌的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分

2026年11月3日 01:50

最近更新

热门文章

新站如何通过网站维护提升SEO排名
2026-10-13 20:56:21 浏览:6
sql server2008下载地址(如何下载SQL Server 2008 R2 SP2免费版)
2026-10-05 05:30:29 浏览:6
标签列表