以下是我正在使用的列表:绘画,150.10,10灯100.20,10地毯,200.00,10时钟,100.00,10雕塑,300.00,10摄影,200.00,10陶器,100.00,10手表,300.00,10韦奇伍德,70.00,10瓷砖,500.00,10
到目前为止,我已经提出了这个建议以分隔项目并出现错误:
ifstream file("antiquelist.txt");
string name;
float price;
int quantity;
while(file.good()){
getline(file, name, ',', price, ',', quantity);
cout << name << endl;
您需要使用默认的tokenizer参数通过getline获取新的数据行,并使用逗号','作为tokenizer参数来解析getline的每一行数据。
#include <iostream>
#include <vector>
#include <string>
#include <sstream>
#include <fstream>
using namespace std;
struct Data {
string m_name;
float m_price;
int m_quantity;
};
int main() {
ifstream file("antiquelist.txt");
string line;
std::vector<Data> items;
Data rowData;
while (getline(file, line)) {
stringstream splitter(line);
string dataStr;
getline(splitter, dataStr, ',');
rowData.m_name = dataStr;
getline(splitter, dataStr, ',');
stringstream(dataStr) >> rowData.m_price;
getline(splitter, dataStr);
stringstream(dataStr) >> rowData.m_quantity;
items.push_back(rowData);
}
return 0;
}