2011-09-15 18 views
17

Hiç boşuna bakmadım ve korkarım ki hiç kimse bunu sormaya cesaret edemeyecek kadar basit bir soru olabilir.Bir satırda birden fazla giriş

Tek bir satırda standart girişten birden fazla şey girilebilir mi?

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

Bazı soruların sorulması gerekmez. Denediğinizde ne olur? – outis

+0

Şu an bunu denemek için gerekli araçlara sahip değilim. – Joshua

+3

@Joshua [İnternet] (http://ideone.com/) [erişim] (http://codepad.org/) yok mu? –

cevap

21

Evet, aynen sözdizimi kullanarak cin gelen giriş birden çok öğe, açıkladığınız yapılabilir: Bunu demek. Sonuç esas olarak aynıdır: "operatör zincirleme" adı verilen bir teknikten kaynaklanmaktadır.

Her çağrı operator>>(istream&, T) (T bazı isteğe bağlı türdür) ilk bağımsız değişkenine bir başvuru döndürür. Bu nedenle cin >> a, (cin>>a)>>b ve benzeri kullanılabilecek cin döndürür.

operator>>(istream&, T) numaralı her aramanın ilk önce tüm boşluk karakterlerini, ardından giriş işlemini yerine getirmek için gereken en fazla karakterini, ilk sonraki boşluk karakterine, geçersiz karaktere veya EOF'ye kadar (ancak dahil etmeyecek kadar) tükettiğini unutmayın.

+0

Teşekkürler. Ben öyle düşünüyordum, ama gerçekten nerede olduğumu test edemedim ve bilgi için kaşınıyordum. – Joshua

+0

Önde gelen beyaz boşluğun farkındaydım, ama diğerleri değil. Temiz! – Joshua

+1

Beyaz karakterlerin yalnızca "skipws" bayrağı ayarlanmışsa tüketileceğini unutmayın. –

5

Evet, yapabilirsiniz.

cplusplus.com Gönderen:

bu işlevler operatör fonksiyonları aşırı, çünkü bunlar denilen edildiği zamanki yoludur: strm bir istream nesne ve variable ait tanımlayıcı olduğunu

strm >> variable; 

Doğru parametre olarak desteklenen herhangi bir türden bir nesne. aynı nesne strm ardışık diş çekimi performans aynıdır

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

: gibi özütleme işlemleri bir ardışık çağırmak mümkündür.

Sadece cin ile strm değiştirin.