あなたがファイルを読んで、情報を構造体に入れてから、構造体を名前にしたがってアルファベット順にベクトルに挿入したいと思っています。
私のような構造体に何か作ると思います。私は、ファイルを開いて、文字列に全部を読んだ
struct StudentInfo {
string name;
string gpa;
string age;
} StudentInfo;
を。それから、文字列を改行文字でトークン化して読みました。各文字列を取得すると、それを解析してstudentInfo構造体を返す関数に入れます。構造体をベクトルに挿入します。
解析機能が働くかもしれない方法の例:
struct StudentInfo parseData(string iStr) {
struct StudentInfo info;
size_t subStrStart = 0;
size_t subStrEnd = 0;
subStrEnd = iStr.find(',', subStrEnd);
info.name = iStr.substr(subStrStart, subStrStart - subStrEnd);
subStrStart = subStrEnd;
subStrEnd = iStr.find(',', subStrEnd+1);
info.gpa = iStr.substr(subStrStart, subStrStart - subStrEnd);
subStrStart = subStrEnd;
subStrEnd = iStr.find(',', subStrEnd+1);
info.age = iStr.substr(subStrStart, subStrStart - subStrEnd);
return info;
}
は、主な機能のためのいくつかの擬似コードは、私が作ると思います:
vector<struct StudentInfo> infoVec;
string fileStr = read(filename.csv); // make an ifstream or something similar
string lineStr;
size_t subStrEnd = 0;
size_t subStrStart = 0;
while (subStrEnd < fileStr.Size) {
subStrEnd = iStr.find('\n', subStrEnd); //alternatively use std::getline() directly on the file stream
lineStr = iStr.substr(subStrStart, subStrStart - subStrEnd);
subStrStart = subStrEnd;
subStrEnd++;
infoVec.insert(parseData(lineString));
}
sortByName(infoVec) // User defined function
printInfoVec(infoVec) // User defined function
印刷機能とソート機能はかなり自明です彼らはあなたにそれらを書くように要求します。
必要に応じて構造体のベクトルを作成できます。 – mash
C++の構造体( 'struct')はクラス(' class')と変わりありません。どちらもメンバー変数を持つことができます。ファイルの読み込みに関しては、['std :: getline'](http://en.cppreference.com/w/cpp/string/basic_string/getline)関数は、ファイルからの読み込みと各行の解析の両方を助けることができます。 –
この問題は、username、gpa、およびageのフィールドを持つ構造体を構築するように要求します。この構造体のベクトルが可能です。 – heLomaN