我有一个程序需要从包含多行的文本文件中获取输入。每行是学生的信息,该信息也以逗号分隔。
到目前为止我所拥有的是
stringstream ss;
string data = "";
string student[50] = "";
int i = 0;
ifstream inFile;
inFile.open("file.txt");
while(getline(inFile, student[i]))
{
cout << student[i] << endl;
i++;
}
占用每一行并将其分配到学生数组中。现在每个学生都有自己的位置。
因此,我还必须将该行拆分为将在Student类中完成的每个组件(name,dob,gpa,address等)。
我有这个,学生变量将是单行的字符串
stringstream ss(student);
while(getline(ss, data, ',')){
cout << data << endl;
}
从文件中单独输出所有数据。
问题是: 如何在较低的代码中更改字符串流将分配给哪个变量(目标不是输出,我是为了测试发生了什么而做的),我是否必须将数据设为数组,然后分配那个数组的元素变成了变量?
是否有关于分隔符的主题我查看了或不明白?
由于
答案 0 :(得分:0)
如果你想重新分配std :: stringstream,你可以这样做:
ss.clear();
ss.str("new string data");
我会在你的while()循环中把它放在首位。这样你就不需要一个数组来存储所有的行。您可以在阅读时将每一行处理成学生记录。
int main()
{
stringstream ss;
string data; // no need to initialize
string student; // no need for array
ifstream inFile;
inFile.open("data.txt");
while(getline(inFile, student))
{
cout << student << endl;
ss.clear(); // clear any errors (from last loop)
ss.str(student); // put student data in ss
while(getline(ss, data, ','))
{
cout << data << endl;
}
}
}