【问题标题】:Difference in use and efficiency when using ifstream [duplicate]使用ifstream时的使用和效率差异[重复]
【发布时间】:2021-06-09 05:31:03
【问题描述】:

我目前正在编写一个程序来从一个大的 .csv 文件中读取数据,并想知道使用之间是否有任何区别:

ifstream  handle("filename");

ifstream handle;
archivo.open("filename", ios::in);

打开文件时。 到目前为止,我都尝试过,两者都在读取数据,然后将其存储在 STL 容器中。我想知道在使用、效率和/或内存使用方面是否有任何具体差异。 提前致谢!

【问题讨论】:

  • 您打开一个大的 .csv 文件一次。为什么你关心打开这个文件的时间而不是有效的多次阅读?
  • 实际上(假设您在第二个中指的是handle.open(....),而不是archivo.open(...))没有区别。如果任一 sn-p 成功,则流是打开的并且可以在后续代码中读取,并且在“效率”(无论您如何衡量)或内存使用方面不太可能有任何差异。唯一的区别是,在第二种情况下,可以在创建和打开流之间采取额外的行动——这并没有太大的作用,因为通过使用适当的方法无法实现的方式并不多。构造函数。

标签: c++ std fstream ifstream text-parsing


【解决方案1】:

它们之间没有区别。

ifstream handle("filename"); - 将 ifstream 类型设为变量,然后在代码的一部分中打开文件;

ifstream handle; - 你让 ifstream 类型变量;

handle.open("filename", ios::in); - 你在另一部分代码中打开文件。

当您需要像班级成员一样拥有 ifsteam 时,第二个版本会很有用。

例如:

    class myClass
    {
    public:
        myClass(std::string str)
        {
            file.open(str);
        }
    private:
        ifstream file;
        ...
    };

【讨论】:

    猜你喜欢
    • 2018-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-24
    • 2016-02-08
    • 2020-06-21
    相关资源
    最近更新 更多