2016-10-13 17 views
0

を追加せずに次のCINプロンプトに行くここに私のコードです:は、私のプログラムが自動的にユーザーが入力

#include <iostream> 

using namespace std; 

const int SENIOR_PRICE = 9; 
const int ADULT_PRICE = 12; 
const float CHILD_PRICE = 6.95; 
const float TAX_RATE = .06; 

int main() 
{ 
     string name; 
     string address; 
     int numSeniorTickets; 
     int numAdultTickets; 
     int numChildTickets; 

     cout << "Enter customer name:" << endl; 
     cin >> name; 

     cout << "Enter customer address:" << endl; 
     cin >> address; 

     cout << "How many senior season tickets?" << endl; 
     cin >> numSeniorTickets; 

     cout << "How many adult tickets?" << endl; 
     cin >> numAdultTickets; 

     cout << "How many child tickets?" << endl; 
     cin >> numChildTickets; 

     return 0; 
} 

ユーザーが自分の名前を入力した後、彼らはその後、自分のアドレスを入力するよう要求されます。しかし、彼らは彼らの住所を入力する前に、シニアシーズンのチケットの数を入力するよう促します。なぜ入力行をスキップするのですか?ここでは何が起こるかです:

Enter customer name: 
Daniel Benson 
Enter customer address: 
How many senior season tickets? 
5 
How many adult tickets? 
5 
How many child tickets? 
5 
+0

これは、名前入力の後に '\ n'があるためです。文字列の場合にはcinは入力バッファに改行文字を残し、次のcinが呼び出されるときには改行をバッファから受け取り、ユーザ入力を待つことはありません。次の文字列を取得する前に、バッファをフラッシュしてみてください。 –

+0

私はC++プログラミングにはかなり新しいです。バッファをフラッシュするとどういう意味ですか? – DanielBenson

+0

これは本当にあなたが簡単にあなたのデバッガを使用して解決できる問題です。 – MrEricSir

答えて

0

cinを>>名。

入力はスペースまでです。したがって、変数nameを印刷するとDanielが得られます。変数addressを印刷するとBensonが表示されます。プログラムに関しては、入力として2つの文字列を取り込んでいます。

A proof of the above statements by printing the variables after input.

あなたは入力として、スペースで区切られた文字列を取るためcin.getline()を使用する場合があります。

+0

私はcinがスペースを入力するだけであることを気付かなかった。私は代わりにcin.getline()を使用し、それは文字列のためにうまく動作します。ありがとう! – DanielBenson

関連する問題