gpt4 book ai didi

c++ - 类 'FileIO' 具有非法的零大小数组;多个字符字符串作为成员数据问题

转载 作者:行者123 更新时间:2023-11-28 05:59:04 24 4
gpt4 key购买 nike

我只想将多个字符数组作为成员数据存储在我的 FileIO 类的私有(private)字段中。出于某种原因,我可以有一个字符数组并且它工作正常,但是当我添加第二个时,我得到标题中所述的错误。

这段代码工作正常:

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 类的成员变量。这是为什么?

最佳答案

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();
}

关于c++ - 类 'FileIO' 具有非法的零大小数组;多个字符字符串作为成员数据问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33622675/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com