1

このifステートメントについて助けが必要です。各文字を読み取って、それが数字かどうかを確認しようとしています。数字でない場合は、次の文字に読み続ける場合は数字ではないと言います。たとえば、ユーザーが 54gr 21 gr42 134 3f3 と入力した場合。数えられるのは 21 と 134 だけです。

#include <iostream> // libraries
#include <iomanip>
#include <string>

using namespace std;

int main()
{

    char string[80];
    // char num[80];
    // char good[80];
    cout << "enter a string "; // prompting user 
    cin.getline(string,80); // geting line
    // int i = 0;
    // int j = 0;
    int count = 0;
    {

    while(string[count] != '\0') {

        if(string[count] >= '0' && string[count] <= '9' )
            cout << count << endl;
            }
           ++ count;
    }
    } 
4

1 に答える 1

2

私はこれをキャラクターごとにやろうとはしません。問題は、5スペース以外の文字列の最後まで読んで、すべての内容が正当に数値の一部であることを確認するまで、それが実際には数値の一部であることに気付かないことです。

そのため、入力を「単語」に分割する必要がある/したいと思います。次に、完全な各単語を完全に数値に変換できるかどうかを確認します。それだけで「言葉」を読むことができますsome_stream >> some_string;

「単語」を取得したら、それを完全に数値に変換できるかどうかを確認します。整数が必要だと仮定すると、strtolそれを数値に変換する (しようとする) ことになります。これにより、数値として変換できなかった最初の文字へのポインターが得られます。それが文字列の末尾でない場合、その「単語」は数字ではありません (1 つ以上の数字で始まっていた場合でも)。

于 2012-04-19T20:14:43.287 に答える