使用this线程的解决方案,我对如何在文本文件中逐行读取有一个大致的了解。我的问题出现在如何将数据填充到我的电话簿中,这是指向对象数组的指针。
这是我的文本文件输出。
Albert, Fred
4541231234
8888 Avenue Drive
Doe, John
6191231234
1234 State Street
Smith, Mike
8791231234
0987 Drive Avenue
我想做的是解析每一行,并使用其所需要的任何信息来填充“电话簿”(定义为)。
class AddressBook
{
private:
Contact* phoneBook[maxSize]; //array of contact pointers
...etc
}
class Contact
{
public:
Contact();
std::string firstName;
std::string lastName;
std::string name; //lName + fName
std::string phoneNumber;
std::string address;
};
至少我认为我可以逐行读取它,但是我不知道从哪里开始如何识别它是名字,姓氏,电话号码还是地址,因为它们都是字符串。
void AddressBook::writeToFile(Contact * phoneBook[])
{
std::string line;
std::ifstream myFile("fileName.txt");
if (myFile.is_open())
{
while (getline(myFile, line))
{
//do something
}
myFile.close();
}
}
答案 0 :(得分:0)
您必须以四行为一组读取文件内容。
std::string line1; // Expected to be empty
std::string line2; // Expected to contain the name
std::string line3; // Expected to contain the phone number
std::string line4; // Expected to contain the address.
并且,使用{p>代替while(getline(...))
语句:
while (true)
{
if ( !getline(myFile, line1) )
{
break;
}
if ( !getline(myFile, line2) )
{
break;
}
if ( !getline(myFile, line3) )
{
break;
}
if ( !getline(myFile, line4) )
{
break;
}
// Now process the contents of lines
}
您可以通过在行组中使用数组来简化这一点
std::string lines[4];
while ( true )
{
// Read the group of lines
for (int i = 0; i < 4; ++i )
{
if ( !getline(myFile, lines[i]) )
{
break;
}
}
// Process the lines
}