我正在尝试编写一个程序,它将获取一个文本文件,其中包含一堆联系信息,并将其存储在一个数组中供以后使用。文本文件没有新行,只是格式为“姓氏”,“姓氏,名字”,“电话号码”,“电子邮件地址”,“家庭住址”,“姓氏,名字“,”电话号码“,”电子邮件地址“,”“,”“,”“
所以我想从文件中读取并获取所有数据成员并保存它们,问题是有时它在“名称”中有名称/数字,有时它只有一组空的引号,如“ “偶尔它只有空间和另一个逗号,如”电话号码“,”“,所以我希望能够检查是否有引用,如果有,那么读取数据,直到下面的”如果没有'引用两个连续的逗号,然后不读入该数据字段并转到下一个数据字段。
我正在大学读大学计算机科学课程,所以我对编程有所了解但不是一切,所以尽量不要以正确的方式把我从水中吹走。这是一个个人项目,而不是任何类型的家庭作业,所以你知道。
到目前为止我的功能看起来像这样
void Info::readFile(ifstream& in)
{
if (in.good())
{
in >> lastName;
}
else if (in.bad() || in.fail())
{
throw BadException();
}
if (in.good())
{
in >> lastName;
}
else if (in.bad() || in.fail())
{
throw BadException();
}
if (in.good())
{
in >> firstName;
}
else if (in.bad() || in.fail())
{
throw BadException();
}
if (in.good())
{
in >> phoneNumber;
}
else if (in.bad() || in.fail())
{
throw BadException();
}
//same code adding other data members
}
答案 0 :(得分:0)
首先,所有stl流类都有一个强制转换为bool和operator!为你检查badbit和failbit,所以你可以替换所有
if (in.bad() || in.fail())
与
if (!in)
现在对于解析部分,似乎你想要以一种非常直接的方式将你得到的文本分开。我建议你在字符串标题中查看std :: getline:http://www.cplusplus.com/reference/string/string/getline/