2016-06-25 2 views
-2

以下のコードでは、ユーザーからデータを収集しようとしています。ただし、プログラムは1つの入力を受け入れ、残りのプロンプトを画面に出力します。ユーザーが入力を完了するまでループ操作を一時停止します

ユーザーからの各プロンプトでデータを収集するようにプログラムを一時停止するにはどうすればよいですか?

#include <iostream> 

using namespace std; 

int main(){ 

char items [10]; 
float budget; 
float prices [10]; 
int i; 

for (i = 0; i < 10; i++){ 
    cout << "Enter item name: "<<endl; 
    cin >> items[i]; 
    cout << "Enter item price: "<<endl; 
    cin >> prices [i]; 

    } 

} 
+1

で始まります:std :: string(およびC文字列)の使い方は? (あなたは本を手に入れるかもしれません) –

+0

'cin >> items [i]' - それは文字列を読みません。それはあなたが入力ストリームに入力したすべてのものを残して、単一の 'char'を読み込もうとします。 '' float'のフォローアップの読み込みが失敗します(いくつかの奇跡によって "a123.45"のような名前をタイプしない限り)、ストリームを失敗状態にしてその後に実行するすべての操作を無視します。そして、子供たちは、私たちが成功または失敗のIO操作をチェックする理由です。 – WhozCraig

答えて

0
char items [10]; 

これは文字の配列であるので、
std::cinはあなたが設定しようとしているインデックスごとに入力バッファから1つの文字を受け入れます。

代わりにstd::string items[10]、またはstd::vector<std::string>>を使用することを検討してください。

関連する問題