Class' FileIO'有一个非法的零大小的数组;多个char字符串作为成员数据问题

时间:2015-11-10 04:04:44

标签: c++ arrays class member

我想要的是将多个char数组作为成员数据存储在我的FileIO类的私有字段中。由于某种原因,我可以有一个char数组,它工作正常,但我很快就添加了一个,我得到标题中声明的错误。

此代码可以正常工作:

class FileIO
{
private:
    char accNum[];
public:
    FileIO();
    ~FileIO();
    void WriteData(Account*);
    void WriteData(Person*);
    void ReadData(Account*);
};

此代码抛出错误:

class FileIO
{
private:
    char accNum[];
    char persName[];
public:
    FileIO();
    ~FileIO();
    void WriteData(Account*);
    void WriteData(Person*);
    void ReadData(Account*);
};

accNum []正在ReadData(Account *)函数中用于存储使用getline()从文本文件中检索的一个字符。这是代码:

void FileIO::ReadData(Account * acc)
{
    ifstream accFile("accInfo.txt");
    accFile.getline(accNum, 100);
    cout << accNum << "\n";
    accFile.close();
}

我希望在同一个文本文件中存储更多行,以便存储在单独的char数组中,但正如您所看到的,我显然只有一个数组作为FileIO类的成员变量。这是为什么?

1 个答案:

答案 0 :(得分:1)

char accNum[];是一个零大小的数组,在C ++中是非法的。

如果您要处理“字符串”,那么您应该使用c样式字符串并使用std::string。然后使用std::string您的代码

class FileIO
{
private:
    std::string accNum;
public:
    FileIO();
    ~FileIO();
    void WriteData(Account*);
    void WriteData(Person*);
    void ReadData(Account*);
};

void FileIO::ReadData(Account * acc)
{
    ifstream accFile("accInfo.txt");
    getline(accFile, accNum);
    cout << accNum << "\n";
    accFile.close();
}