C ++从csv文件读取,然后将数据分配给类成员

时间:2017-04-01 11:04:45

标签: c++ class readfile

我是C ++初学者。我下面显示的基本代码能够读取csv文件并逐行打印出数据。但是,我无法弄清楚如何将所有这些数据分配给我定义的通勤类变量。我已经尝试了很多在线教程,但它总会显示错误,我不知道如何调试。可以有人给我一个手或一些提示吗?谢谢。

示例数据:

commuter1;A;7;20 
commuter2;B;8;30
commuter3;F;10;10
.....
#include<iostream>
#include<string>
#include<vector>
#include<fstream>//strtok 
using namespace std;
class Commuter {
private:
    string name;
    char point;
    int hour;
    int minute;
public:
    Commuter(string name, char point, int hour, int min) {
        this->name = name;
        this->point = point;
        this->hour = hour;
        this->minute = min;
}
void setname(string name);
void setpoint(char point);
void sethour(int hour);
void setmin(int min);
vector<Commuter> commuter;
};

void Commuter::setname(string name) {
this->name = name;
}
void Commuter::setpoint(char point) {
this->point = point;
}
void Commuter::sethour(int hour) {
this->hour = hour;
}
void Commuter::setmin(int min) {
this->minute = min;
}
int main() {
ifstream commuterfile;
string filename;
string str;
cout << "Enter the file path: " << endl;
cin >> filename;
commuterfile.open(filename.c_str());
if (!commuterfile) {
    cerr << "ERROR" << endl;
    exit(1);
}
while (getline(commuterfile, str, ';')) {
    cout << str << endl;
}
commuterfile.close();
return 0;
}

1 个答案:

答案 0 :(得分:0)

您的str变量中包含数据行,因此您应该可以采取更多步骤并将其添加到您的班级。

首先,你应该弄清楚如何split the string into components

下一步是将每个组件从字符串转换为您需要的数据类型。 atoi将是将字符串转换为int的好函数。

您也需要一个班级实例。例如Commuter commuter;然后您可以调用实例上的函数,如commuter.setXXX(variable);