2016-07-29 2 views
-1

テーブルにデータを入力したかったのですが、 入力を別の列にする必要があります。問題は、私がcinを使うと、同じ行に続くのではなく、次の行にジャンプするということです。ここC++のテーブルにデータを入力

は私が使用するコードです:

string itemname; 
int amount; 
float price; 
cout << setprecision(2); 
cout << fixed; 
cout << left << setw(30) << string(30, '-') << endl; 
cout << left << setw(10) << "Itemname" << setw(10) << right << "Amount" << setw(10) << right << "Price" << endl; 
cin >> left >> setw(10) >> itemname >> setw(10) >> right >> amount >> setw(10) >> right >> price; 

は私がこれを行うために、CIN以外で使用することができる何かがあるのでしょうか?

答えて

0

入力演算子>>は通常、空白で区切ります。ほとんどの型は、先頭の空白をスキップします。だから、>>を使って文字列や数字を読むときは、空白(スペース、タブ、改行など)が1つある限り、そこにいくつのスペースがあるかは関係ありません。

他のすべての書式設定は入力には使用されません。左揃えまたは右揃えまたはフィールド幅は関係ありません。

cin >> itemname >> amount >> price; 

3つの項目を取得する必要があります。

実際にあなたの質問に答えてください:それは依存しています。 C++およびC++ストリームクラスを標準入力から読み込む場合は、std::cinしか使用できません。それ以外の場合は、古いC標準I/O関数を使用してstdinから読み取ることができますが、フィールド幅を使用しようとするとフィールド幅などの他の問題が発生します。機能のファミリーscanfは何かを意味します。


テキスト入力を読み取るだけ標準方法で標準入力を使用して入力は、(おそらく他の型に変換)フィールド配向、しかし線が配向されていません。

入力

foo 1 2 

foo   1 2 
+0

とまったく同じである私は、適切な列を取得文句を言わないこれを使用する場合はい、しかし、私はそれを達成できる方法はありますか? –

+1

@ ParthSindhu列はスペースで区切られていますか?次に、私の答えのコードは、*入力を読む*うまく動作します。標準入力(CまたはC++)はフィールド単位ではありません。基礎となるコードとプログラム(ターミナルエミュレータとカーネルとバッファリング)は* line *を読み込み、その行のフィールドを別々に解析します。 –

関連する問題