2011-09-15 18 views
17

私は役に立たないと思っています。誰もそれを尋ねることがないような単純な質問かもしれません。複数の入力を1行に入力

標準入力から複数のものを1行で入力できますか?私はこれを意味する:

float a, b; 
char c; 

// It is safe to assume a, b, c will be in float, float, char form? 
cin >> a >> b >> c; 
+3

いくつかの質問には質問する必要はありません。試してみるとどうなりますか? – outis

+0

私は現在、これを試す方法がある場所にいません。 – Joshua

+3

@Joshua [インターネット](http://ideone.com/)[アクセス](http://codepad.org/)はありませんか? –

答えて

21

はい、あなたはcinからの入力複数のアイテムを、あなたが記述正確な構文を使用することができます。結果は本質的には次のものと同じです。

cin >> a; 
cin >> b; 
cin >> c; 

これは「演算子連鎖」と呼ばれる技術によるものです。

operator>>(istream&, T)Tは任意の型です)への各呼び出しは、最初の引数への参照を返します。したがってcin >> acinを返します。これは(cin>>a)>>bなどとして使用できます。

operator>>(istream&, T)を呼び出すたびに、すべての空白文字、次に入力操作を満たすのに必要な文字数、最初の空白文字、無効な文字、またはEOFまでが消費されます。

+0

ありがとうございます。私はそう思っていましたが、私がどこにいてもそれを実際にテストすることはできませんでした。私は知識のために苦しんでいました。 – Joshua

+0

私は先行する空白を認識していましたが、残りは認識しませんでした。ニート! – Joshua

+1

空白文字は、 'skipws'フラグがセットされている場合にのみ消費されることに注意してください。 –

5

はい、できます。

cplusplus.comから:

これらの機能は、機能を演算子オーバーロードされているので、それらが呼び出される通常の方法は次のとおりです。

strmはIStreamのオブジェクトの識別子であり、 variableがある
strm >> variable; 

任意の型のオブジェクトは、右のパラメータとしてサポートされています。同じオブジェクトstrmから連続抽出を行うことと同じである

strm >> variable1 >> variable2 >> variable3; //... 

:それとして、抽出操作を連続して呼び出すことも可能です。

strmcinに置き換えてください。

関連する問題