【发布时间】:2018-04-02 13:12:41
【问题描述】:
这些是我的 Login.csv 文件中的数据:
ID、姓名、密码、性别
1,利亚姆,1234,M
2,珍妮丝,0000,F
所以我可能会使用类和对象来创建登录详细信息,并将其写入文件中。之后,我会将文件中的 csv 拆分为字符串向量,然后如何将详细信息加载回类对象。
这是我从文件中拆分 csv 的代码:
int _tmain(int argc, _TCHAR* argv[])
{
string line;
ifstream fin("users.csv");
while (getline(fin, line)){
vector<string> token;
split(line, ',', token);
for (int i = 0; i < token.size(); i++){
cout << token[i] << " ";
//////////// <<here>>
}
cout << endl;
}
system("pause");
return 0;
}
void split(const string& s, char c, vector<string>& v) {
string::size_type i = 0;
string::size_type j = s.find(c);
while (j != string::npos) {
v.push_back(s.substr(i, j - i));
i = ++j;
j = s.find(c, j);
if (j == string::npos)
v.push_back(s.substr(i, s.length()));
}
}
我在想如何将拆分的字符串从字符串向量设置为对象向量,如下所示:(放入我在上面评论的 > 部分)
vector<Login>loginVector;
//all the objects below should set from string vector (token)
loginVector[i].setID(); //i=0, id=1, name=Liam, password=1234, gender=M
loginVector[i].setName();
loginVector[i].setPassword();
loginVector[i].setGender();
loginVector[i].setID(); //i=1, id=2, name=Janice, password=0000, gender=M
loginVector[i].setName();
loginVector[i].setPassword();
loginVector[i].setGender();
谢谢。
【问题讨论】:
-
您是否尝试过搜索?有 100 多个关于解析 CSV 的问题。
-
公平地说,那里的讨论和所有答案似乎都涉及
boost,这对于简单的 CSV 解析器来说有点矫枉过正。