我遇到的问题是如何在类和对象方面正确使用getline()
。我需要阅读string
类型的行,然后使用myVec
将其添加到push_back
向量中。这就是我现在所拥有的:
vector<myClass> read_file(string filename)
{
vector<myClass> myVec;
myClass line;
ifstream inputFile(filename);
if (inputFile.is_open())
{
while (inputFile.getline(inputFile, line)) // Issue it here.
{
myVec.push_back(line);
}
inputFile.close();
}
else
throw runtime_error("File Not Found!");
return myVec;
}
假设已经实现了类myClass
。
感谢您的帮助。
答案 0 :(得分:2)
您对getline
的使用与签名不匹配 - 您的参数类型错误。
istream& getline (char* s, streamsize n );
istream& getline (char* s, streamsize n, char delim );
如果要根据您阅读的字符串向向量添加myClass
元素,则必须先构造它,然后再将其推回。
答案 1 :(得分:1)
假设课程
myClass
已经实施。
这没有帮助,我们不能假设它已经实现并知道它的界面是什么或如何使用它,所以我们无法回答你的问题。
为什么您希望std::ifstream
知道如何使用myClass
?为什么要将inputFile
作为参数传递给inputFile
的成员函数?您是否查看过显示如何使用getline
?
假设您可以从myClass
构建std::string
,这将有效(请注意它会读到string
并注意您不需要手动关闭文件):
vector<myClass> read_file(string filename)
{
ifstream inputFile(filename);
if (!inputFile.is_open())
throw runtime_error("File Not Found!");
vector<myClass> myVec;
string line;
while (getline(inputFile, line))
{
myClass m(line);
myVec.push_back(m);
}
return myVec;
}