【问题标题】:C++ Opening a file and inputting data to a class objectC++ 打开文件并将数据输入到类对象
【发布时间】:2010-09-21 21:45:15
【问题描述】:

简单的问题,希望是一种简单的方法,只是想验证我是否以正确/有效的方式进行操作。

我有一个 T 类对象,它通常被放入在我的 main() 函数中创建的向量中。它可以是任何类型的数据、字符串、int、float.. 等。我正在从一个文件中读取......它是从用户输入并传递给函数的。这是我的基本阅读功能:

template <class T, class U>
void get_list(vector<T>& v, const char *inputFile, U)
{
ifstream myFile;
T object;

myFile.open("inputFile")
while(!myFile.eof())
   {
   myFile >> object;
   insert(v, object, U)
   }
}

insert 只是另一个将数据插入到我的数据结构中的函数。我只是想确保这是传递该数据的最佳方式,如果它甚至可以工作。

【问题讨论】:

    标签: c++ class input ifstream


    【解决方案1】:

    看起来它可以正常工作,我想说这可能是最好的方法。但是你为什么要在这里问而不是自己测试呢?

    【讨论】:

    • 我不是在找人写代码,我只是想找到一种从文件中获取输入并将其插入对象类的好方法,因为我以前从未这样做过。不,我不会坐在课堂上写下这些东西以获得成绩。我只是不想把它全部写给
    • 有我不理解的晦涩错误消息,因为我的基本输入功能无法正常工作,因为我缺乏从文件中获取数据的方法的知识。
    【解决方案2】:

    不要在 while 条件下的流上使用 .eof()。只有在尝试读取文件末尾之后,该条件才会评估为真。更好的方法是做

    while(myFile >> object)
        insert(v, object, U);
    

    您对U 的使用存在缺陷。我不知道它是用来做什么的。一次它被用作一种类型,但另一次你将它作为一个值传递给insert 函数。

    【讨论】:

      【解决方案3】:

      您犯了在条件中针对 eof 进行测试的老错误。 直到您尝试读取文件末尾之后才设置 EOF。所以这个方法会在你不想要的向量中插入一个额外的值。

      template <class T, class U>
      void get_list(vector<T>& v, const char *inputFile, U)
      {
          ifstream myFile("inputFile");  // Why hard code this?
                                         // When you pass inputFile as a parameter? 
          T object;
      
      
          while(myFile >> object)  // Get the object here.
                                   // If it fails because of eof() or other
                                   // It will not get inserted.
          {
               insert(v, object, U)
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2017-09-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-11
        • 1970-01-01
        • 2015-01-25
        • 2019-07-17
        相关资源
        最近更新 更多