在多次文件读取后,使用ifstream读取文件

时间:2015-05-06 23:43:44

标签: c++ raspberry-pi ifstream

所以我已经为覆盆子pi编写了这个应用程序来玩RFID标签。 无论如何,关键是标签靠近传感器,我读取标签,然后使用ifstream打开包含标签和个人设置的文件。

以下是代码:

bool Config::isTagInConfig(std::string tagID)
{
    /// Opens humans.cfg file and checks if tag is inside.
    std::ifstream file(PATH);
    std::string str;
    std::string delimiter = "\t";

    while (std::getline(file, str))
    {
        /// Since the tagID is always the first column, then the next line
        /// strictly obtains the tagID ALWAYS.
        std::string file_tagID = str.substr(0, str.find(delimiter));
        if (tagID == file_tagID)
        {
                file.close();
                return true;

        }
    }

    std::cout << tagID << " not found in Config file..." << std::endl;
    file.close();
    /// Consider adding a helper here, to add unknown tags.
    return false;
}

代码在最初的几个小时内工作正常,但过了一段时间由于某种原因无法读取文件... 我不断收到消息,在Config文件中找不到标记ID。

我试过搜索为什么会这样。我曾经没有'file.close()'这一行,但最近我改变了这一点,但这个bug仍然存在。

知道我做错了吗?

感谢您阅读!

1 个答案:

答案 0 :(得分:0)

我遇到了类似的问题,在运行程序一段时间后,ifstream不再有效。即使我也在调用file.close(),打开太多文件后它似乎不再有效。原来我在程序的其他地方有一个fopen()没有fclose()。我会检查你打开文件的其他任何地方,并确保它们也被关闭。