#include <iostream> #include <fstream> #include <sstream> #include <string> #include <vector> using namespace std; class stock { public: string name; int num; double price1, price2, price3; void print() { cout << num << " " << name << " " << price1 << " " << price2 << " " << price3 << endl; } }; class pe { public: vector<stock> s; }; int main() { ifstream file("D:\\price.txt"); string line; vector<pe> p; while (getline(file, line)) { stringstream ss(line); pe new_pe; stock new_stock; ss >> new_stock.num >> new_stock.name >> new_stock.price1 >> new_stock.price2 >> new_stock.price3; new_pe.s.push_back(new_stock); p.push_back(new_pe); } file.close(); for (int i = 0; i < p.size(); i++) { for (int j = 0; j < p[i].s.size(); j++) { p[i].s[j].print(); } } return 0; }这段代码对文件操作不改变,请将pe动态生成三个后,每一个下存放十个stock,或者让stock中的向量出现三个,每一个按照顺序读取文件的每十组数据
时间: 2024-03-24 19:38:46 浏览: 44
使用include <iostream>时一定要加using namespace std
要实现每一个pe下存放十个stock的功能,可以在while循环中添加一个计数器,每读取十组数据就将这十组数据存入一个新的pe对象中,然后将该对象存入p向量中。修改后的代码如下:
```cpp
int main() {
ifstream file("D:\\price.txt");
string line;
vector<pe> p;
pe new_pe; // 新建一个pe对象
int count = 0; // 计数器
while (getline(file, line)) {
stringstream ss(line);
stock new_stock;
ss >> new_stock.num >> new_stock.name >> new_stock.price1 >> new_stock.price2 >> new_stock.price3;
new_pe.s.push_back(new_stock);
count++;
if (count == 10) { // 如果已经读取了十组数据
p.push_back(new_pe); // 将新的pe对象存入p向量中
new_pe = pe(); // 重新创建一个pe对象
count = 0; // 计数器清零
}
}
file.close();
// 输出每一个pe对象中的所有stock对象
for (int i = 0; i < p.size(); i++) {
for (int j = 0; j < p[i].s.size(); j++) {
p[i].s[j].print();
}
}
return 0;
}
```
要实现让stock中的向量出现三个,每一个按照顺序读取文件的每十组数据的功能,可以在while循环中添加一个计数器和一个向量,每读取一组数据就将这组数据存入向量中,当向量中已经存入十组数据时,将该向量存入一个新的pe对象中,然后将该对象存入p向量中。修改后的代码如下:
```cpp
int main() {
ifstream file("D:\\price.txt");
string line;
vector<pe> p;
vector<stock> s; // 新建一个向量
int count = 0; // 计数器
while (getline(file, line)) {
stringstream ss(line);
stock new_stock;
ss >> new_stock.num >> new_stock.name >> new_stock.price1 >> new_stock.price2 >> new_stock.price3;
s.push_back(new_stock);
count++;
if (count == 10) { // 如果已经读取了十组数据
pe new_pe; // 创建一个新的pe对象
new_pe.s = s; // 将向量存入新的pe对象中
p.push_back(new_pe); // 将新的pe对象存入p向量中
s.clear(); // 清空向量
count = 0; // 计数器清零
}
}
file.close();
// 输出每一个pe对象中的所有stock对象
for (int i = 0; i < p.size(); i++) {
for (int j = 0; j < p[i].s.size(); j++) {
p[i].s[j].print();
}
}
return 0;
}
```
阅读全文