2017-01-12 12 views
-4

数字を入力するまで、ユーザーからの文字入力を取得する必要があります。最後に入力したユーザー数も必要です。 数字を入力するまでユーザーからの入力を取得

#include <iostream> 
using namespace std; 
int fun() { 
    char c; 
    while(1) { 
     if(cin>>c == 1) { //To check if we are still getting input 
      if(isdigit(c)) { //If a number is found return to the main function 
       return c-48; //Char converted to Int 
      } 
     } 
     else { 
      break; 
     } 
    } 
    return c-48; 
} 

int main() { 
    int a = fun(); 
    cout<<a; 
    return 0; 
} 

は今 ahd qer 12 32などの入力のために、それは私がそれを与えるだろう知っている 1として出力を提供します。私が出力したいものは 12です。どうやってするか?主な機能にもいくつかの変更を加えることができます。私は最終的に変数 aに格納されている番号が欲しいです。

SOLUTION

#include <iostream> 
    using namespace std; 

    int fun() { 
     string c; 
     while(cin>>c) { 
      if(isdigit(c[0])) 
       return stoi(c); 
     } 
    } 

    int main() { 
     int a = fun(); 
     cout<<a<<" "; 
     return 0; 
    } 
+0

@Gyanshu何についての特殊文字(例えば '#'/'' $ /等。)?文字が数字を表しているかどうか知りたいのであれば、少なくともあなたは 'isdigit'を使っていませんか? –

+0

少なくともCの(署名された)charを 'isdigit'に渡すことは未定義の動作です(そして' #include 'が必要です)。 – melpomene

+0

私はそれを 'isdigit'と置き換えます。しかしそれはまた私に数字の最初の数字だけを与えます。整数を得る方法はありますか? – Gyanshu

答えて

0

を完了! クレジット:AlgirdasPreidžius

@
#include <iostream> 
    using namespace std; 

    int fun() { 
     string c; 
     while(cin>>c) { 
      if(isdigit(c[0])) 
       return stoi(c); 
     } 
    } 

    int main() { 
     int a = fun(); 
     cout<<a<<" "; 
     return 0; 
    } 
+0

動作しません。 "acbd1234"のような入力で失敗する – user4581301

+0

私の入力には、このような文字列が含まれていません。 – Gyanshu

+0

数字または文字列のいずれかのみが含まれています – Gyanshu

関連する問題