这看起来挺奇怪的。我有一段代码如下所示:
List(const char* fn) {
std::ifstream file(fn);
if (!file){
throw std::string("*** Failed to open file ") + std::string(fn) + std::string(" ***");
}
while (file) {
T e;
if (e.load(file)){
list.push_back(*new T(e));
}
}
}对于其他人,它似乎贯穿整个文件很好。但对我来说,我被困在我的机器上一个无限的循环中。
OS X- g++ 4.2
我不知道为什么这里有不同的功能。
下面是无限循环:
while (file) {
T e;
if (e.load(file)){
list.push_back(*new T(e));
}
}发布于 2014-12-04 19:54:06
只要文件处于有效状态,while(file)将返回true。
您还没有告诉我们T是什么或它的load方法是什么,所以我们不能给您提供更多的信息。您需要确保load方法要么关闭文件描述符,要么让它处于eof状态或其他类似的状态。
https://stackoverflow.com/questions/27302810
复制相似问题