對于我的大學編程課程,我們一直在研究面向物件編程 (OOP),目前正在開展一個小組專案。該專案是創建一個收銀機,其中包含物品的名稱、數量和價格。以及有一種方法來跟蹤用戶給出的硬幣,然后確定硬幣面額。這些應該在不同的類中完成并涉及物件。
我的問題是關于我正在編碼的庫存經理。庫存管理器應該獲取“data.txt”檔案并將其讀入適當的向量中。目前,我有一個用于專案名稱、價格、金額的向量,然后是 itemList 向量,該向量包含所有 3 個字串以列印給用戶以提高可讀性。
這是資料檔案中的一個片段:
20 1.99 Potato Chips
10 5.99 Ibuprofen
4 1.42 Candy
55 3.10 Coffee
12 3.25 Hummus
12 4.55 Guacamole
7 0.80 Baklava
45 1.50 Chocolate Chip Cookies
我的問題是,如何拆分佇列,以便將金額(第一個數字)傳遞給適當的向量,將價格傳遞給適當的向量,然后將名稱傳遞給適當的向量。基本上將每行分成3部分。對我來說最困難的部分是專案名稱如何可以是 1 個單詞、2 個單詞甚至 3 個單詞。很難預測名稱將包含多少個空格,這導致我的很多嘗試都不起作用。
盡管我擔心它不正確或效率低下,但我找到了一個可行的解決方案,并且我很想知道做到這一點的最佳方法。非常感謝您,我將在下面發布類定義和我正在使用的方法。
<流物件是inFile>
class inventoryManager
{
private:
double total, change, choice;
vector <int> amount;
vector <string> name;
vector <double> price;
vector <string> itemList;
public:
void fileOpen(fstream& inFile);
void fillInventory(fstream& inFile);
void printInventory(fstream& inFile);
};
void inventoryManager::fillInventory(fstream& inFile)
{
string temp;
string a, b;
while (!inFile.eof())
{
inFile >> a >> b;
amount.push_back(stoi(a));
price.push_back(stod(b));
getline(inFile, temp);
name.push_back(temp);
itemList.push_back(temp);
}
}
嘗試:我嘗試使用 find() 函式查找每個空間,然后使用索引將估計的索引列印到空白空間的每一側到向量。雖然它非常混亂,如果輸入不同的資料檔案就無法作業。該程式的想法是,如果放入不同的檔案,格式相似但數量可能為 100,價格可能更多位數,則能夠作業。我還嘗試通過為每個空格添加新行來直接編輯檔案,但遇到帶有多個空格的專案名稱并最終無法正常作業。
uj5u.com熱心網友回復:
你試圖一次做太多新的事情。把問題分解成小塊,分別解決,然后組合起來。要將字串分解成可以使用findand的部分substr,您只需要小心并除錯,直到您確定它作業正常:
string s = "45 1.50 Chocolate Chip Cookies";
cout << "s: " << s << endl; // for debugging
size_t first = s.find(' ');
cout << first << endl; // for debugging
string amountString = s.substr(0, first);
cout << amountString << "X" << endl; // for debugging
size_t second = s.find(' ', first 1);
cout << second << endl; // for debugging
string priceString = s.substr(first 1,second-first-1);
cout << priceString << "X" << endl; // for debugging
string nameString = s.substr(second 1);
cout << nameString << "X" << endl; // for debugging
這些 X 的目的是確保子字串沒有尾隨空格。
一旦您以這種方式解決了問題(并將結果提交給評分),您就可以使用類似的工具stringstream,并且您將不再需要處理這種骯臟的索引演算法。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/526112.html
標籤:C 细绳文件目的向量
上一篇:計算文本檔案中每一行的數字數量
