タスクは次のようになります: 名前、価格、金額を1行に入力してください。 1.私の問題は、次のとおりです。 あなたが望むとおりに例のタイプのための場合は、できるだけ多くの行を入力する必要があります 猿200 3 アカエイ399 1C++複数のcinデフォルト値が入力されていない場合、マップに追加<文字列、ベクトル<double>>
それは動作しますが、あなたが唯一の名前と価格に言及した場合に量があるべき1が指定されていない場合は、1にマップに追加されます。代わりにutは次のものにジャンプし、ループ上でintに文字列名を入力します。これを行うための他の方法はありますか?
#include <string>
#include <map>
#include <vector>
int main(){
map<string, vector<double>> vec;
string name;
double price;
double amount;
while(cin >> name >> price >> amount){
vec[name] = {price , amount}
}
return 0;
}
あなたのやり方では、ユーザーは3つのフィールドを入力する必要があり、量はオプションのようです。あなたは、それが単一の文字列であるかのようにそれを読み取って分割する必要があります - あなたが金額を見つけた場合、あなたはデフォルトのパスに行きます。そうでない場合は、別のパスに移動します。 –
okej、私はgetlineコマンドのようなものを読んだことがありますが、私の状況で@LeonardoAlvesMachadoを正しく使用するには – Jim
行を 'string'に読み込みます。 'string'を' stringstream'にロードし、次にデータを解析します。あなたがファイルを紛失している場合、ストリームはエラー状態になり、その量をデフォルトにするかどうかを知ることになります。 – NathanOliver