zoukankan      html  css  js  c++  java
  • 输入一个字符串,统计共有多少个整数并输出。

    输入一个字符串,内有数字和非数字字符如:

    a123x456_17960?302tab5876

    将其中连续的数字作为一个整数,依次存放到一数组a中。例如123放在a[0]中,456放在a[1]中………统计共有多少个整数。并输出这些数字。

    /*****************************************************************
    输入一个字符串,内有数字和非数字字符如:a123x456_17960?302tab5876
    将其中连续的数字作为一个整数,依次存放到一数组a中。例如123放在a[0]中,
    456放在a[1]中………统计共有多少个整数。并输出这些数。
    ******************************************************************/
    #include <iostream>
    #include<string>
    using namespace std;
    #define max_size 100
    void main()
    {
        int flag=0,digit=0,a[10],i,n=0;
        char b[max_size];
        cout<<"输入一个字符串:";
        cin>>b;
        for(i=0;b[i]!='';i++)
        {
            while((b[i]>='0')&&(b[i]<='9'))
            {
                flag=1;
                digit=digit*10+b[i]-'0';
                i++;
            }
            if(flag==1)
            {
                a[n]=digit;
                n++;
                digit=0;
                flag=0;
            }
        }
        cout<<"统计得含有整数的个数为:"<<n<<endl;
        cout<<"这些数字是:"<<endl;
        for(i=0;i<n;i++)
        {
            cout<<a[i];cout<<endl;
        }
    }
    代码运行后发现一个问题,如果输入的字符串包含空格,比如11a 22s 33f这样,只能识别到第一个空格之前的字符串,这里也就是11,空格之后的字符串识别不到,查阅了相关资料后发现,应该是这样的问题:

    cin标准输入读取string有两个规则:1、读取并忽略开头所有空白字符(如空格,换行符,制表符);2、读取字符直至再次遇到空白字符,读取终止。

    这样就解释清楚了,因为再次遇到了空白字符,所以后面的字符串没有被读取进来。

    在上面基础上我修改了代码,使用getline函数读取整行文本,只有在getline遇到换行符,才会停止读取并返回。

    getline函数接受两个参数:一个输入流对象和一个string对象。 

    string str;

    getline(cin,str)

    这里就需要把string类型转换为char*数组,具体的转换方法如下:

    char ch[100];
    string str;

    把char*(c类型的string)数组转换为string:
    str = ch; //即可
    str.assign(ch); //也可

    把string类型转换为char*数组:
    strcpy(ch,str.c_str());    //即可
    for(int i = 0; i < str.length(); i++)   //也可
    {
        ch = str.at(i);
        ch ++;
    }

    这样就解决了这个问题,可以找出读入的包含空白字符字符串中的数字了。
  • 相关阅读:
    SQLAlchemy介绍
    Flask介绍
    逆转的生殖——形而下的EOE补完仪式…
    huiyin
    实验课上
    我的博客今天1岁213天了,我领取了…
    关于直接写屏
    OceanBorn&nbsp;&nbsp;歌曲列表
    Gethsemane
    光辉岁月-Beyond
  • 原文地址:https://www.cnblogs.com/raiven2008/p/4260876.html
Copyright © 2011-2022 走看看