如何在用c ++读取文件时忽略一个字符

时间:2013-11-17 05:41:42

标签: c++ file-io ifstream

我正在尝试编写一个程序,它将获取一个文本文件,其中包含一堆联系信息,并将其存储在一个数组中供以后使用。文本文件没有新行,只是格式为“姓氏”,“姓氏,名字”,“电话号码”,“电子邮件地址”,“家庭住址”,“姓氏,名字“,”电话号码“,”电子邮件地址“,”“,”“,”“

所以我想从文件中读取并获取所有数据成员并保存它们,问题是有时它在“名称”中有名称/数字,有时它只有一组空的引号,如“ “偶尔它只有空间和另一个逗号,如”电话号码“,”“,所以我希望能够检查是否有引用,如果有,那么读取数据,直到下面的”如果没有'引用两个连续的逗号,然后不读入该数据字段并转到下一个数据字段。

我正在大学读大学计算机科学课程,所以我对编程有所了解但不是一切,所以尽量不要以正确的方式把我从水中吹走。这是一个个人项目,而不是任何类型的家庭作业,所以你知道。

到目前为止我的功能看起来像这样

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
}

1 个答案:

答案 0 :(得分:0)

首先,所有stl流类都有一个强制转换为bool和operator!为你检查badbit和failbit,所以你可以替换所有

if (in.bad() || in.fail())

if (!in)

现在对于解析部分,似乎你想要以一种非常直接的方式将你得到的文本分开。我建议你在字符串标题中查看std :: getline:http://www.cplusplus.com/reference/string/string/getline/