这是我的功能;
int charCount(ifstream &file)
{
char character = ' ';
int count=0;
while (!file.eof())
{
file.get(character);
count++;
}
return count;
}
这是主要的;
int listSize = charCount(file);
char *arrayList = new char [listSize];
int index = 0;
while (!file.eof() && index < listSize)
{
file.get(arrayList[index]);
index++;
}
当我尝试打印此阵列时,没有任何显示。但是,当我设置一个像char *arrayList = new char [50];
这样的整数值时,它就可以了。
我怎么解决这个问题?感谢。
我通过调用clear()
和seekg()
charCount函数现在看起来像这样
int charCount(ifstream &file)
{
char character = ' ';
int count=0;
while (!file.eof())
{
file.get(character);
count++;
}
file.clear();
file.seekg(0, ios::beg);
return count;
}
答案 0 :(得分:5)
问题不在于数组的分配。问题是你读取整个文件以找出它的大小,所以当你再次尝试读取它以获取其内容时它已经处于eof状态。
答案 1 :(得分:1)
当你执行这个函数charCount(file);
时。你将到达文件末尾。在这种情况下,循环永远不会执行。
while (!file.eof() && index < listSize)
{
file.get(arrayList[index]);
index++;
}
出于同样的原因,你没有在数组中得到任何东西。