我在为我的CMPT类实验室分配时遇到了一些问题... 我正在尝试读取具有两个单词和一个字符串的文本文件每行数字,文件可以和任何人一样长。在.txt文件中逐字读取到C++中的结构
一个例子是
Xiao Wang 135798642
Lucie Chan 122344566
Rich Morlan 123456789
Amir Khan 975312468
Pierre Guertin 533665789
Marie Tye 987654321
我必须让每行一个独立的“学生”,所以我想用结构来做到这一点的,但我不知道该怎么做,因为我需要第一个,最后一个和身份证号码要分开。
struct Student{
string firstName;
string secondName;
string idNumber;
};
全部完成每个字分别都无法读取的尝试(结束了在阅读整个行,而不是)和我正在温和地沮丧。
在@Sylence的帮助下,我设法分别阅读每行。尽管如此,我仍然对如何用空白分割线条感到困惑。 ifstream中是否有分割函数? Sylence,是'部分'将是一个数组?我看到你有[]中的索引。 students.add(stud)
究竟做了什么? 到目前为止我的代码是:
int getFileInfo()
{
Student stdnt;
ifstream stdntFile;
string fileName;
char buffer[256];
cout<<"Please enter the filename of the file";
cin>>filename;
stdntFile.open(fileName.c_str());
while(!stdFile.eof())
{
stdFile.getLine(buffer,100);
}
return 0;
}
这是我的修改,并最终getFileInfo的版本(),谢谢你沙赫巴兹,为方便,快捷的方式在数据读取。
void getFileInfo()
{
int failed=0;
ifstream fin;
string fileName;
vector<Student> students; // A place to store the list of students
Student s; // A place to store data of one student
cout<<"Please enter the filename of the student grades (ex. filename_1.txt)."<<endl;
do{
if(failed>=1)
cout<<"Please enter a correct filename."<<endl;
cin>>fileName;
fin.open(fileName.c_str());// Open the file
failed++;
}while(!fin.good());
while (fin >> s.firstName >> s.lastName >> s.stdNumber)
students.push_back(s);
fin.close();
cout<<students.max_size()<<endl<< students.size()<<endl<<students.capacity()<<endl;
return;
}
我现在困惑的是如何访问输入的数据!我知道它被放入一个向量中,但是如何访问向量中的单独空间以及向量中存储的输入数据的确切程度?如果我试图找出一个矢量的点,我得到一个错误,因为Visual Studio不知道输出什么我猜..
对不起,链接到txt文件没有工作, – b3orion
那么你有什么试图做?告诉我们你的努力,以便我们可以帮助你。 – Bart
好吧..感谢您的快速回复。我很乐意向您展示我目前为止的内容,但我无法弄清楚如何在此评论框中设置代码的格式。我只是把撇号或[代码]或其他东西?抱歉无能力。 – b3orion