好的,通過它的聲音,這個問題要你讀取文件,把信息放入一個結構體中,然後按照名稱的字母順序將結構體插入到向量中。
我會做的結構是這樣的:
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)函數可以幫助讀取文件並解析每一行。 –
該問題要求您構建一個帶有用戶名,gpa和年齡字段的結構。這個結構的向量是可能的。 – heLomaN