好的,通过它的声音,这个问题要你读取文件,把信息放入一个结构体中,然后按照名称的字母顺序将结构体插入到向量中。
我会做的结构是这样的:
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