带有ifstream指针错误的getline()

getline() with ifstream pointer error?

本文关键字:getline 错误 ifstream 指针 带有      更新时间:2023-10-16

我有以下代码:

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

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

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

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

当然,还要删除bufferchar[]版本。这样,您就有了一个动态大小的buffer,它可以与std::getline一起使用,并使用正确的终止条件。