我有这个函数从文件中读取文本并将其添加到字符串中,现在奇怪的是,如果它是一个短文本,它可以正常工作.但如果它的文本较长,则字符串变为空,那么解决此问题的任何帮助都会受到赞赏.
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)
1)不要eof()用来控制循环.将getline直接进入循环状态.如果您在执行此操作时遇到问题,请搜索StackOverflow.
2)getline尽管你有误导性的缩进,你的while循环没有括号,因此只能覆盖线.
3)getline丢弃换行符.你的最后一个字符串是错的.
4)你观察到的实际行为来自于你只追加getline返回你的字符串的最后一件事.当您的文件包含一行文本但不以换行符结尾时,这似乎有效.如果它有更多的行但不以换行结束,那么你只会得到最后一行.如果文件以换行符结尾,由于你的循环条件不正确,最后一次调用getline实际上会给你一个空字符串,这正是你字符串的内容.