3

私は C++ プログラミングが初めてで、障害に遭遇しました。これが私のコードです:

#include <iostream>
using namespace std;

int main(){

    int sum = 0, a;
    cout << "enter first set of numbers:";
    while(cin >> a) sum += a;
    cout << "first sum = " << sum;
    cin.clear();
    cin.ignore( numeric_limits<streamsize>::max(), '\n');

    sum = 0;
    cout << "enter second set of numbers:";
    while(cin >> a) sum += a;
    cout << "second sum = " << sum;
}

コマンド ラインで入力した 2 つの数値セットを合計しようとしています。問題は、ctrl-d を押して最初の数字のセットを終了すると、2 番目の cin のセットがスキップされることです。インターネット上の他の場所で見つけたほとんどのページでは、cin.clear と cin.ignore を使用するように指示されています。私はそれを試しましたが、まだうまくいきません。cin.clear() に関するこのページの質問にも同じ問題があるようです。ただし、彼らが提案する修正は私にはうまくいきません。

上記のコードは他の人でも機能しますか?

4

3 に答える 3

0

// 複数のユーザー入力には stringstream ^^ を使用します

#include <iostream>
#include <string>
#include <sstream>

using namespace std;

int main (void)
{
    string mystr;
    float price = 0;
    int quantity = 0;

    cout << "Enter price: ";
    getline (cin, mystr);
    stringstream(mystr) >> price;
    cout << "Enter quantity:";
    getline (cin, mystr);
    stringstream(mystr) >> quantity;
    cout << "Total price: " << price*quantity << endl;

    return 0;

}
于 2016-11-15T23:16:48.133 に答える