从具有非空格分隔数据的文件中读取类对象

时间:2019-01-12 14:48:08

标签: c++

我正在尝试从文本文件中加载类对象,并且设法用空格分隔的数据轻松做到这一点,但是我找不到使用非空格分隔的数据的简便方法。

我可以这样做的一种方法是将数据保存为字符串,将单词分开,然后将它们保存在字符串向量中,然后从那里加载类对象,但是我认为它变得太复杂了。

Dog类中有istream重载。

std::istream & operator>>(std::istream & is, Dog & dog)
{
    is >> dog.m_name >> dog.m_age >> dog.m_weight;
    return is;
}

这就是我阅读空格的方式。

 void LoadDogs(const string & filePath, vector<Dog> & vect)
{
    Dog temp;
    fstream theFile;
    theFile.open(filePath, ios::in);
    while (theFile >> temp)
    {
        vect.push_back(temp);
    }
    theFile.close();
}

现在我正在像这样读取文件:

Buster 12 40 Jonny 30 40
Ducky 3 6

我需要一种简单的方法来读取文件,如下所示:

Buster-12-40-Jonny-30-40
Ducky-4-6

感谢您的帮助。我一直在寻找最简单的方法,这就是我想出的:

解决方案

void LoadDogs4(const string & filePath, vector<Dog> & vect)
{
    fstream theFile;
    theFile.open(filePath, ios::in);
    stringstream sstream;
    sstream << theFile.rdbuf();
    theFile.close();
    string s = sstream.str();
    replace(s.begin(), s.end(), '-', ' ');
    sstream.str(s);
    Dog temp;

    while (sstream >> temp)
    {
        vect.push_back(temp);
    }

}

我将感谢您对演出的任何评论!

0 个答案:

没有答案