リストから読み込んで物をパラレルベクトルで保存するインベントリシステムを作ろうとしています。私のベクタは、自分のコードに含まれているクラスのパブリックメンバとして設定されています。テキストファイルには、ここでは、このファイルの次の行から読むC++
1111
Dish Washer
20 250.50 550.50
2222
Micro Wave
75 150.00 400.00
3333
Cooking Range
50 450.00 850.00
4444
Circular Saw
150 45.00 125.00
6236
Tacos
200 5.00 5.50
のように見える私はどこに私のコードブレークのコメント私のコード
int main()
{
char choice;
Inventory Stocksheet(5); // the included list has 5 items if a text file has more then it should scale fine
int id, ordered;
string name;
double manuprice, price;
ifstream data;
data.open("Inventory Data.txt");
if (data.fail())
{
cout << "Data sheet failed to open \n";
exit(1);
}
while (data >> id)
{
Stocksheet.itemID.push_back(id);
getline(data,name);
Stocksheet.itemName.push_back(name); // this is where my code fails
data >> ordered;
Stocksheet.pOrdered.push_back(ordered);
Stocksheet.pInstore.push_back(ordered);
data >> manuprice;
Stocksheet.manuPrice.push_back(manuprice);
data >> price;
Stocksheet.sellingPrice.push_back(price);
}
do
{
cout << " Your friendly neighborhood tool shack\n";
cout << "Select from the following options to proceed \n";
cout << "1. Check for item \n";
cout << "2. Sell an iem \n";
cout << "3. Print Report \n";
cout << "Input any number other than 1,2 or 3 to exit \n";
cout << "Selection : ";
cin >> choice; // think about sstream here
switch (choice)
{
case '1': checkforitem(Stocksheet);
break;
case '2': sellanitem(Stocksheet);
break;
case '3': printthereport(Stocksheet);
break;
default: cout << " ^-^ Exiting the shop. Have a fantastic day! ^-^ \n";
break;
}
}while ((choice == '1') || (choice == '2') || (choice == '3'));
data.close();
return 0;
}
です。 whileループでは、数値IDが最初のベクトルにプッシュされますが、名前は空白で、その後のすべての値は空白のままです。私のループの設定に何か問題がありますか?
あなたが尋ねていることから少し離れているので、答えとして投稿するつもりはありません。データを処理する方がはるかに簡単な行のベクトルのようなものに分割することを検討したいかもしれません。任意の行が微風になります)、特に将来このような操作を行う必要がある場合 –
@WilliamKappler私はそれをどうやってやるのか分かりません。私はちょうどベクトルが何であるか学びました。これまで私がベクトルについて新しいことを学んだのは、私の研究室インストラクターが「いいえ、あなたは配列を使う必要はありません」ということです。 – Callat
ベクトルは基本的には配列ですが、後でサイズを決定する機能などの機能を備えています。格納する必要がある行の数( '\ n'文字の数+ 1)、' std :: vector 'のサイズをそのサイズに変更した後、各 '\ n'に読み込みます入力の終わりに達するまで、ベクトルの各連続する要素に書き込みます。基本的に、PHPの 'explode()'のC++バージョンが必要です。私はこれがあなたの質問とは別のものかもしれないと言いました。 –