【发布时间】:2014-10-18 18:18:53
【问题描述】:
我有一个程序需要从多行文本文件中获取输入。每行是学生的信息,该信息也用逗号分隔。
到目前为止我所拥有的是
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++;
}
获取每一行并将其分配到学生数组中。现在每个学生都有自己的位置。
因此,我还必须将行拆分为每个组件(姓名、出生日期、gpa、地址等),这将在 Student 类中完成。
我有这个,学生变量将是一行的字符串
stringstream ss(student);
while(getline(ss, data, ',')){
cout << data << endl;
}
从文件中单独输出所有数据。
问题是: 如何更改将在较低代码中分配字符串流的变量(目标不是输出,我这样做是为了测试以查看发生了什么),我是否必须将数据设为数组然后分配元素那个数组变成变量?
是否有我看过或不理解的与分隔符有关的主题?
谢谢
【问题讨论】:
-
凹凸。如果有人可以提供帮助,我将不胜感激。我不会在接下来的一个小时左右上班,但我会回复任何可以提供帮助的人。再次感谢
-
您的
Student班级是什么样的?如果getline(ss, data, ',')正确分解了您的输入,您可以简单地在循环中使用getline(ss, studentVar.name ',')和其余的Student变量。 -
如果你想重新分配
std::stringstream,你可以这样做:ss.clear(); ss.str("new string data");。 -
@Namfuak student 拥有私有的所有数据变量。公众有一个重载的构造函数,传递从 main 获取的字符串。然后应用该代码。我需要它做的是从字符串中取出每个部分(用逗号分隔)并将其分配给相应的变量。每个字符串将采用相同的格式。
-
class Student{ private: string fName; string lName; string gpa; string credHours; public: Student(string data){ stringstream ss(data); while(getline(ss, data, ',')){ cout << data << endl; } }
标签: c++ arrays delimiter ifstream