首页 > 其他分享 >统计字符串中整数个数并分别输出数字(超级详细)

统计字符串中整数个数并分别输出数字(超级详细)

时间:2024-11-24 22:57:59浏览次数:7  
标签:字符 变量 个数 整数 vector str 字符串

【问题描述】

输入一行字符串,不要超过80个字符,含有数字和非数字字符以及空格等,如:
df23adfd56 2343?23dgjop535
如果将其中所有连续出现的数字视为一个整数,要求统计在该字符串中共有多少个整数,并将这些数依次输出。
【输入说明】

只有一行,含有数字和其它任意字符。该行最长含80个字符。
【输出说明】

第一行为字符串包含的整数个数,第二行依次为各个整数,各整数之间用一个空格分隔。在第二行末也要输出一个回车符。
【输入样例】

 df23adfd56 2343?23dgjop535

【输出样例】

5
23 56 2343 23 535

【样例说明】

在字符串df23adfd56 2343?23dgjop535中有5个整数分别是
23 56 2343 23 535


#include <iostream>
#include <string>    //引入字符串头文件,用于处理字符串相关的操作,如定义字符串变量、使用字符串函数等
#include <vector>    //引入vector头文件,用于使用vector容器,它是C++标准库中提供的动态大小数组类型

using namespace std;  // 使用标准命名空间,这样就可以直接使用std命名空间中的标识符,如cout、cin、string、vector等,而不需要每次都加上std::前缀

//函数声明,用于判断一个字符是否为数字字符,具体定义在代码后面
bool isN(char c);  

int main()
{
    string str;        //定义一个字符串变量str,用于存储从控制台输入的字符串
    int i;              //定义一个整型变量i,主要用作循环变量
    int start = 0;      //定义一个整型变量start,用于记录连续数字字符序列在字符串中的起始位置
    int number;         //定义一个整型变量number,用于存储从字符串中提取并转换后的整数

    //定义一个vector<int>类型的变量N,用于存储从输入字符串中提取出的所有整数
    vector<int> N;  

    cin >> str;        //使用cin从控制台读取输入的字符串,并存储到str变量中

    //遍历输入字符串str的每个字符,循环变量i从0开始,每次循环增加1,直到i小于字符串的长度
    for (i = 0; i < str.length(); i++)  
    {
        // 调用isN函数判断当前字符str[i]是否为数字字符
        if (isN(str[i]))  
        {
            start = i;  //如果当前字符是数字字符,将当前位置i记录为连续数字字符序列的起始位置

            //用while循环继续往后遍历字符串,只要当前字符仍然是数字字符且未超出字符串的长度,就继续循环,目的是记录完整的数字字符串
            while (isN(str[i]) && i <字符串的长度)  
                i++;  

            //通过substr函数从字符串str中提取出从起始位置start开始,长度为i - start的子字符串
            //这个子字符串就是一个完整的数字字符串
            string numberStr = str.substr(start, i - start);  

            //使用stoi函数将提取出的数字字符串numberStr转换为整数,并存储到number变量中
            number = stoi(numberStr);  

            //将转换后的整数添加到vector<int>类型的变量N中
            N.push_back(number);  
        }
    }

    //输出vector<int>类型的变量N中存储的整数的个数,即题干中的整数个数
    cout << N.size() << "\n";  

    //遍历vector<int>类型的变量N,输出其中存储的所有整数,每个整数之间用一个空格隔开
    for (i = 0; i < N.size(); i++)  
        cout << N[i] << " ";  

    cout << "\n";  //输出一个换行符,使输出结果更加清晰

    return 0;
}

// 函数定义,用于判断一个字符是否为数字字符
// 参数:
//    - c:要判断的字符
// 返回值:
//    如果字符c是数字字符(即'0'到'9'之间的字符),则返回true;否则返回false
bool isN(char c)
{
    return c >= '0' && c <= '9';
}

其中vector详细的用法介绍传送门→

C++ vector的超级详细实用用法-CSDN博客

标签:字符,变量,个数,整数,vector,str,字符串
From: https://blog.csdn.net/2401_86982397/article/details/144007656

相关文章

  • 一篇文章看懂字符串哈希
    定义将一个字符串映射至一个整数\(w\)后称\(w\)为该字符串的\(hash\)值。性质对于一个固定的字符串,其在使用相同\(hash\)生成方式下得到的\(hash\)值唯一,而且对于每一个固定的\(hash\)值,其所对应的字符串在很大概率下是唯一的,因此我们在求出字符串的\(hash\)值后可以通过判断两......
  • 写个方法随机打乱一个数组
    functionshuffleArray(array){//创建数组的副本,避免修改原始数组constshuffledArray=[...array];//Fisher-Yates洗牌算法for(leti=shuffledArray.length-1;i>0;i--){constj=Math.floor(Math.random()*(i+1));//随机索引0到i......
  • 关于C语言 字符串(字符数组)s
    关于charC语言中的字符型用关键字char表示,它实际存储的是ASC码。字符常量可以用单引号法表示。在语法上可以把字符当做int型使用。字符串的实际长度每次存储字符串,应多分配字符个数加1,因为C语言的字符串被读取后会添加空字符"\0"结尾例如:存储"2357"到chara[20]中,a会存储......
  • ybtoj:字符串处理
    A:点击查看代码#include<bits/stdc++.h>usingnamespacestd;intmain(){ intn; cin>>n; if(n<0) { cout<<"-"; } n=abs(n); boolb=0; while(n>0) { if(n%10!=0) { cout<<n%10; b=1; } elseif(b==1) {......
  • 递归(力扣:生成不含相邻零的二进制字符串
    题目(生成不含相邻零的二进制字符串)        给你一个正整数 n。        如果一个二进制字符串 x 的所有长度为2的子字符串中包含 至少 一个 "1",则称 x 是一个 有效 字符串。        返回所有长度为 n 的 有效 字符串,可以以任意顺......
  • char字符串
    在C语言中,字符串 是由 char 类型的数组组成并以空字符('\0')结束的字符序列。C语言并没有内置的字符串类型,字符串实际上是一个字符数组,而空字符是用来标识字符串的结束。下面是关于C语言中字符串的一些重要内容:1.字符串的定义字符串可以通过两种方式定义:直接用双......
  • 「Mac玩转仓颉内测版27」基础篇7 - 字符串类型详解
    本篇将介绍Cangjie中的字符串类型,包括字符串的定义、字面量形式、插值表达、常用操作及应用场景,帮助开发者熟练掌握字符串的使用。关键词字符串类型定义字符串字面量插值字符串字符串拼接常用操作一、字符串类型概述在Cangjie中,字符串是一组Unicode字符的集合,用......
  • 提高组字符串专题1
    A[NOIP2020]字符串匹配枚举循环节\(AB\),找到最多的循环节,剩下的一定包含在\(C\)。然后可以发现的是\(F(C)=F((AB)^kC),k>1\),那么就只用考虑\(C\)和\(ABC\)的贡献即可。复杂度\(\mathcal{O}(N\logN)\)。#include<bits/stdc++.h>usingnamespacestd;constexprintN......
  • 最大相等分割红包金额、RGB色值转换为整数值
    目录一、最大相等分割红包金额问题描述测试样例解题思路:问题理解数据结构选择算法步骤关键点最终代码:运行结果:二、RGB色值转换为整数值问题描述测试样例解题思路:问题理解数据结构选择算法步骤具体步骤 最终代码: 运行结果: ​编辑 一、最大相等分......
  • Mybatis-plus如何处理数据库字段是字符串类型的情况
    一、背景项目中遇到这样的情况,存在一个数据库表,我们需要用Mybatis对这个表进行操作。其中有时间字段,但是居然类型是varchar,这样我们编写的实体类里面对应的类型必须是String?还是LocalDateTime?二、正确的处理方式实体的字段类型仍然需要是LocalDateTime,这样才能保证我们时间......