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

C++ 如何在c+中读取文件时忽略字符+;,c++,file-io,ifstream,C++,File Io,Ifstream,我正试图编写一个程序,将我有一个文本文件,其中有一堆联系信息,并将其存储在一个数组中供以后使用。文本文件没有新行,只是格式为“姓氏”、“姓氏、名字”、“电话号码”、“电子邮件地址”、“家庭地址”、“姓氏、名字”、“电话号码”、“电子邮件地址”、“姓名”、“电话号码”、“电子邮件地址” 所以我想从文件中读取并获取所有数据成员并保存它们,问题是有时它在“name”中有名称/编号,有时它只有一组空引号,如“”,有时它只有空格和另一个逗号,如“Phone number”、“,所以我想能够检查是否有引号,

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

所以我想从文件中读取并获取所有数据成员并保存它们,问题是有时它在“name”中有名称/编号,有时它只有一组空引号,如“”,有时它只有空格和另一个逗号,如“Phone number”、“,所以我想能够检查是否有引号,是否有引号,然后读取数据,直到下一个“,如果没有引号,则只需两个连续的逗号,然后不向该数据字段读取任何内容,并移动到下一个

我在大学三年级上计算机科学课,所以我对编程有点了解,但不是所有的东西,所以尽量不要用正确的方法把我从水里吹出来。这是一个个人项目,不是任何类型的家庭作业,你知道的

到目前为止,我使用的函数如下所示

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和operator!它为您检查badbit和failbit,所以您可以替换所有

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


现在,对于解析部分,您似乎希望以一种非常简单的方式分离“和”上的文本。我建议您查看字符串头中的std::getline:

首先:听起来您的文件格式定义为一组由逗号分隔的重复记录。如果逗号只出现在元素之间,那么这就意味着一种相当简单的解析策略。第二:这些是引号,不是圆括号:
。请缩进您的代码。您的代码甚至没有显示解决问题的尝试。。。
if (!in)