如何在 C++ 中读取文件时忽略字符

how to ignore a character while reading from a file in c++

本文关键字:字符 文件 读取 C++      更新时间:2023-10-16

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

所以

我想从文件中读取并获取所有数据成员并保存它们,问题是有时它在"名称"中有名称/编号,有时它只有一组空引号,例如",有时它只有空格和另一个逗号,如"电话号码",,",所以我希望能够检查是否有引号,如果有,然后读取数据直到下面的",如果没有引号,只有两个连续的逗号,那么在该数据字段中不读取任何内容并移动到下一个。

我在大学读计算机科学课的大三,所以我对编程有所了解,但不是所有事情,所以尽量不要用正确的方式把我从水里吹出来。这是一个个人项目,不是任何类型的家庭作业,只是为了让你知道。

到目前为止,我拥有的功能如下所示

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
}

首先,所有 stl 流类都有一个 bool 和运算符 ! 为您检查坏位和故障位,因此您可以替换所有

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

if (!in)

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