现有csv:
Name2 ,Nationality2 ,Gender2
John, Norway, Male
Mike, Germany, Male
May, Singapore, Female
Nate, Swiss, Male
Rosa, Female, Australia
An, Britain, Female
Jack, USA, Male
将其存入vector中,用到class
class csvdata
{
public:
char Name[20];
char Country[20];
char Gender[20];
};
如何一行一行存入,且每个值对应属性
比如 incsv.Name[2]是May
仅供参考
#include <iostream>
#include <string>
#include <vector>
#include <tuple>
#include <algorithm>
#include <iterator>
#include <iomanip>
using namespace std;
string simplified(const string &str)
{
string s;
copy_if(str.begin(), str.end(), back_inserter(s), [](auto c)
{ return !isspace(c); });
return s;
}
int main()
{
vector<tuple<string, string, string>> list;
string buffer;
getline(cin, buffer); // ignore the first line.
string name, country, gender;
while (getline(cin, name, ',') &&
getline(cin, country, ',') &&
getline(cin, gender, '\n'))
list.push_back({simplified(name), simplified(country), simplified(gender)});
for (auto &&[name, country, gender] : list)
cout << left << setw(20) << name << setw(20) << country << setw(20) << gender << '\n';
return 0;
}
$ g++ -Wall -std=c++17 main.cpp
$ cat test.csv
Name2 ,Nationality2 ,Gender2
John, Norway, Male
Mike, Germany, Male
May, Singapore, Female
Nate, Swiss, Male
Rosa, Female, Australia
An, Britain, Female
Jack, USA, Male
$ cat test.csv | ./a.out
John Norway Male
Mike Germany Male
May Singapore Female
Nate Swiss Male
Rosa Female Australia
An Britain Female
Jack USA Male