我想要的是将多个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类的成员变量。这是为什么?
答案 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();
}