简单的问题,希望是一种简单的方法,只是想验证我正在以正确/有效的方式做到这一点。

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

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只是另一个将经历并将数据插入我的数据结构的函数。我只是想确保这是传递数据的最佳方式,如果它甚至可以工作。

有帮助吗?

解决方案

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

其他提示

你犯了一个旧的错误,即在条件下对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)
    }
}

-condition时,不要在的流上使用 .eof()。在尝试读取文件末尾之后,该条件将仅评估为。更好的方法是做

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top