これらの3つの変数を1つのデータ型にまとめることをお勧めします。 「ドリンク」と呼ぶことができます。
struct DrinkT{
std::string name;
float cost;
unsigned int quantity;
DrinkT(std::string const& nameIn, float const& costIn, unsigned int const& quantityIn):
name(nameIn),
cost(costIn),
quantity(quantityIn)
{}
};
これには多くの利点があります。
あなたは次のようにドリンクを作成することができます:
DrinkT coke("Coca-Cola",0.75,20);
をし、このように変数にアクセス:飲み物のオブジェクトのみが指定したものを開催します
std::cout << coke.name << std::endl; //outputs: Coca-Cola
std::cout << coke.cost << std::endl; //outputs: 0.75
std::cout << coke.quantity << std::endl; //outputs: 20
:飲み物の名前を、ドリンク代、ドリンク量が含まれています。
オブジェクトには、これら3つの値のすべてを構築するコンストラクタがあります。
これは、すべての値を同時に指定する場合にのみ、飲み物オブジェクトを作成できることを意味します。
ドリンクオブジェクトをたくさん保管している場合(そして何個か知っているかもしれない場合)、それらを何らかの容器に入れたい場合もあります。
ベクターは良い選択です。あなたが保存したいだけ多くの飲み物を説明するために、ベクターは成長します。
ファイルをループして、3つの値を個別に読み込み、ベクターに保存しましょう。我々はファイルの終わりに達するまで、飲み物ごとにこれを何度も繰り返します。 G ++ -std = C++ 0X -o主主でコンパイル
int main(){
std::ifstream infile("file.txt");
std::vector<DrinkT> drinks;
std::string name;
std::string cost;
std::string quantity;
std::getline(infile,name,',');
std::getline(infile,cost,',');
std::getline(infile,quantity,' ');
while (infile){
drinks.push_back(DrinkT(name,atof(cost.c_str()),atoi(quantity.c_str())));
std::getline(infile,name,',');
std::getline(infile,cost,',');
std::getline(infile,quantity,' ');
}
//output
for(DrinkT drink : drinks){
std::cout << drink.name << " " << drink.cost << " " << drink.quantity << std::endl;
}
return EXIT_SUCCESS;
}
。使用言語機能のいくつかのCPP
情報:
http://www.cplusplus.com/reference/string/getline/
http://www.cplusplus.com/reference/stl/vector/
この宿題はありますか? –
質問の形式が正しくないため、回答の大部分が無効でした。書式が修正されると、データの読み込みは、これまでに登場したよりもはるかに(そしてより単純な)問題であることが明らかになります。 –