我正在尝试从文本文件中加载类对象,并且设法用空格分隔的数据轻松做到这一点,但是我找不到使用非空格分隔的数据的简便方法。
我可以这样做的一种方法是将数据保存为字符串,将单词分开,然后将它们保存在字符串向量中,然后从那里加载类对象,但是我认为它变得太复杂了。
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);
}
}
我将感谢您对演出的任何评论!