Class 'FileIO' 有一个非法的 zero-sized 数组;多个字符字符串作为成员数据问题
Class 'FileIO' has an illegal zero-sized array; Multiple char strings as member data issue
我只想将多个字符数组作为成员数据存储在我的 FileIO class 的私有字段中。出于某种原因,我可以有一个字符数组并且它工作正常,但是当我添加第二个时,我得到标题中所述的错误。
这段代码工作正常:
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 class 的成员变量。这是为什么?
char accNum[];
是零大小的数组,在 C++ 中是非法的。
如果您要处理 "strings",那么您应该放弃使用 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();
}
我只想将多个字符数组作为成员数据存储在我的 FileIO class 的私有字段中。出于某种原因,我可以有一个字符数组并且它工作正常,但是当我添加第二个时,我得到标题中所述的错误。
这段代码工作正常:
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 class 的成员变量。这是为什么?
char accNum[];
是零大小的数组,在 C++ 中是非法的。
如果您要处理 "strings",那么您应该放弃使用 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();
}