輸入一個字符串,統計共有多少個整數並輸出。


輸入一個字符串,內有數字和非數字字符如:

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]!='\0';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 ++;
}

這樣就解決了這個問題,可以找出讀入的包含空白字符字符串中的數字了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



猜您在找 輸入一個字符串,內有數字和非數字字符,將其中連續的數字作為一個整數,依次存放到一數組a中。統計共有多少個整數,並輸出這些數。 10.16輸入一個字符串,內有數字和非數字字符,如: a123x456 17960? 302tab5876 將其中連續的數字作為一個整數,依次存放到一數組num中。例如123放在num[0]中,456放在num[1]中……統計共有多少個整數,並輸出這些數。 輸入一個字符串,內有數字和非數字字符,例如:A123x456 17960? ,302tab5876,將其中連續的數字作為一個整數,依次存放到一數組a中。例如,123放在a[0],456放在a1[1].....統計共有多少個整數,並輸出這些數 輸入一個字符串,內有數字和非數字字符。例如:a123x456 17960 302tab5876。將其中連續的數字作為一個整數,依次存放到一維數組a中,例如123放在a[0],456放在a[1]……統計共有多少個整數,並輸出這些數。 輸入一個字符串,統計字符串中有多少個大寫字母,小寫字母,數字,空格,其他字符 python 中輸入一個字符串,判斷這個字符串中有多少個字符、數字、空格、特殊字符 c語言輸入一個字符串,統計其字母,數字和其他字符的個數,並以柱狀圖輸出 java輸入一個字符串,輸出該字符串的所有的排序 逆轉字符串—輸入一個字符串,將其逆轉並輸出。 從鍵盤輸入一個字符串,再輸入兩個正整數m和n,輸出字符串中從m開始,連續n個字符。例如,輸入abcdefg,2,3,輸出bcd。
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM