从文件中读取文本的问题

bry*_*ryo 0 c++ getline

我有这个函数从文件中读取文本并将其添加到字符串中,现在奇怪的是,如果它是一个短文本,它可以正常工作.但如果它的文本较长,则字符串变为空,那么解决此问题的任何帮助都会受到赞赏.

 string inlasning(string namn)
{
    string filString, temp;

    ifstream filen(namn.c_str());

    if(!filen.good())
    {
        cout << "Otillganglig fil" << endl;
        filString = "ERROR";
        return filString;
    }
    else
    {
        while(!filen.eof())
            getline(filen, temp);
            filString.append(temp);
    }

    filen.close();
    return filString;

}
Run Code Online (Sandbox Code Playgroud)

Seb*_*edl 6

1)不要eof()用来控制循环.将getline直接进入循环状态.如果您在执行此操作时遇到问题,请搜索StackOverflow.

2)getline尽管你有误导性的缩进,你的while循环没有括号,因此只能覆盖线.

3)getline丢弃换行符.你的最后一个字符串是错的.

4)你观察到的实际行为来自于你只追加getline返回你的字符串的最后一件事.当您的文件包含一行文本但不以换行符结尾时,这似乎有效.如果它有更多的行但不以换行结束,那么你只会得到最后一行.如果文件以换行符结尾,由于你的循环条件不正确,最后一次调用getline实际上会给你一个空字符串,这正是你字符串的内容.