我需要在不拉扯头发的情况下使用多语言QFile
打开文件。QString
但我还需要通过std::stream
API 管理这些文件的数据。正如许多人建议的那样,我曾经std::fstream stdFile(fdopen(qtFile.handle(), mode));
这样做过。
但是,我在重复操作时遇到了问题。经过特定数量的文件处理后,应用程序崩溃。
以下代码可以重现崩溃:
int fileOperationCount = 0;
while (true)
{
QFile qtFile("plop.txt");
qtFile.open(QIODevice::ReadOnly);
std::ifstream file = std::ifstream(fdopen(qtFile.handle(), "rb"));
if (!file.good())
throw std::exception();
file.seekg(0, file.beg);
if (!file.good())
throw std::exception(); //Will ALWAYS trigger at fileOperationCount = 509
qtFile.close();
fileOperationCount++;
}
509th 将在seekg
. 如果我要操作数百个不同的文件,也会发生这种情况。第 509 次我尝试读取文件时,它仍然会崩溃,任何文件。
知道我做错了什么吗?