2016-09-12 15 views
0

私はC++で簡単な電卓を作ろうとしています。私の最初のバージョンでは、私はメニューベースのシステムを持っていました。私は入力を逐次求めましたので、整数を検証するのは簡単でした。しかし、私はあなたが実際の電卓に入力する形式で質問を入力するユーザーを取得することがわかった。C++でこの形式の整数/倍精度に入力を制限する方法はありますか?

double first; 
char choice; 
double second; 

cin >> first >> choice >> second; 

は、しかし、今私は私が見てきたソリューションのほとんどは、私は私のCINは、3つのデータを取り込んでいるので、私は実装できるかわからないこの形式に従うので、私は確認することができますどのように立ち往生しています。

int x; 
cin >> x; 

if (!cin) 
{ 
    // not a number 
} 
+1

ユーザが1行にすべて入力したとしても、アイテムを一度に1つずつ「シンク」することはできます。 – Galik

+0

@Galik @R Sahuのソリューションを組み込んでいるときにどうすればいいですか? –

答えて

2

ユーザーが端末に入力した内容を制限することはできません。あなたができる最も良いことは、入力が適切でないことを検出して、入力を再度尋ねることです。

while (!(cin >> first)) 
{ 
    cout << "Please an enter a floating point number: " 
    cin.clear(); 
    cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); 
} 

他の数字についても同じことをします。

0

scanf()<stdio.h>または<cstdio>の機能を使用すると、入力の種類をさらに細かく調整できます。もう1つの方法は、入力行をstd::stringまたはcharバッファとして読み込み、その行を解析して有効な入力であるかどうかを確認することです。

関連する問題