无法传递函数值来设置数组大小C ++

时间:2015-12-22 16:38:13

标签: c++

这是我的功能;

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

2 个答案:

答案 0 :(得分:5)

问题不在于数组的分配。问题是你读取整个文件以找出它的大小,所以当你再次尝试读取它以获取其内容时它已经处于eof状态。

答案 1 :(得分:1)

当你执行这个函数charCount(file);时。你将到达文件末尾。在这种情况下,循环永远不会执行

while (!file.eof() && index < listSize)
{
    file.get(arrayList[index]);
    index++;
}

出于同样的原因,你没有在数组中得到任何东西。