说我有一个文本文件" Employees.txt"使用员工姓名和身份证。
像这样:
John:d4250
Sarah:s5355
Alan:r4350
如果我有一个非常非常基本的Employee类,它有一个Name和ID的构造函数 我希望从这个文本文件中读取并将它们插入到矢量
中我最好使用类似的东西:
void GenericProgram::loadEmployees()
{
string line;
ifstream empFile("employees.txt");
if(empFile.fail())
{
cout << "input file opening failed\n" << endl;
exit(EXIT_FAILURE);
}
while (!empFile.eof())
{
string empName;
string empID;
while (getline(empFile, line, '\n'))
{
// this will give me the line on its own
// now how to delimit again using ':'
// then do something like
Employee e(empName, empID)
employeeVector.push_back(e);
}
empFile.close();
}
}
我很抱歉这是如此基本。大脑失败了。我想知道是否有更好的方法来读取文件以使用流填充对象。
答案 0 :(得分:0)
只需添加到您的代码
int pos = line.find(":", 0);
if (pos != std::string::npos)
{
std::string empName(line.begin(), line.begin() + pos);
std::string empID(line.begin() + pos + 2, line.end());
}
对于多个“:”
std::vector<std::string> str;
std::vector<size_t> positions;
positions.push_back(0);
do
{
positions.push_back(line.find(":", positions.size() - 1));
}
while(positions[positions.size() - 1] != std::string::npos);
for (int i = 0; i < positions.size(); i+=2)
{
str.push_back((line.begin() + positions[i], line.begin() + positions[i+1]));
}
但我没有测试过它。