c ++逗号分隔/ getline

时间:2014-10-18 18:18:54

标签: c++ arrays delimiter ifstream

我有一个程序需要从包含多行的文本文件中获取输入。每行是学生的信息,该信息也以逗号分隔。

到目前为止我所拥有的是

 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;
    }

从文件中单独输出所有数据。

问题是: 如何在较低的代码中更改字符串流将分配给哪个变量(目标不是输出,我是为了测试发生了什么而做的),我是否必须将数据设为数组,然后分配那个数组的元素变成了变量?

是否有关于分隔符的主题我查看了或不明白?

由于

1 个答案:

答案 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;
        }
    }
}