带有ifstream指针错误的getline()?

时间:2015-02-10 01:42:18

标签: c++

我有以下代码:

void Category:: fillCategories(char** & categories, char** &subset, std::ifstream *input, 
int*&subIndex)
{
    while(!input->eof())
    {
        char buffer[30];
        if (getCatSize()==getCatCapacty())
        {
            resize(categories, getCategoryCapAddress(), 5);
        }
        if (getSubSize()==getSubCap())
        {
            resize(subset, getSubsetCapAddress(), 5, subIndex);
        }
        std::getline(*input,buffer);
    }
}

出于某种原因

std::getline(*input,buffer); 

给我一​​个错误。我能做些什么来解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

您应该将getline移至循环条件,并将while替换为for,如下所示:

for (std::string buffer; getline(*input, buffer); )

当然,请删除char[] buffer版本的buffer。这样,您就可以使用动态调整大小的std::getline {{1}},并使用正确的终止条件。