gpt4 book ai didi

c++ - 在 C++ 中倒带 ifStream

转载 作者:太空宇宙 更新时间:2023-11-04 16:28:37 27 4
gpt4 key购买 nike

我知道之前有人问过这个问题,我阅读了与之相关的主题,但那里的解决方案对我不起作用。

ifstream myFile;

myFile.open("largefile.txt");

if (myFile.is_open())
{
while (!myFile.eof( )) //step through each line until end of file
{
myFile>> str;
if(str.size() < 5){
amount++;
}
}
}

myFile.seekg(0, ios::beg);

if (myFile.is_open())
{
for(int i=0; i != random_integer; i++) //step through each line until random line reached
{
myFile>> str;
if(i == random_integer-1){
cout << "\n";
cout << str;
cout << "\n";
cout << str.size();
}
}
}
myFile.close();

我读到在 while 语句中使用 EOF 是个坏主意,有什么替代方案?由于 seekg 无法正常工作,我如何才能倒回第二个循环,我不想关闭文件并再次打开,而且文件太大而无法真正读入数组?

TIA,我确信这是一个简单的修复程序,我只是 C++ 的新手。

最佳答案

而不是测试 eof()(它不能正常工作),你应该只需通过在 bool 值中使用流来验证每个输入是否有效上下文:

while ( myFile >> str ) {
// ...
}

当然,一旦失败,流就处于失败状态,这必须在允许任何进一步操作之前重置:

myFile.clear();
myFile.seekg( 0, std::ios_base::beg );

关于c++ - 在 C++ 中倒带 ifStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9569285/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com