Frage

Einfache Frage, hoffentlich eine einfache Möglichkeit, und will einfach nur, um zu überprüfen ich die richtige / effiziente Art und Weise mache.

Ich habe ein Klasse T-Objekt, die in der Regel in einen Vektor gebracht wird, die in meinem main () Funktion erstellt wird. Es kann jede Art von Daten sein, string, int, float .. etc. Ich bin aus einer Datei zu lesen ..., die von dem Benutzer eingegeben wird, und auf die Funktion übergeben. Hier ist meine grundlegende Lese in Funktion:

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)
   }
}

Einsatz ist nur eine andere Funktion, die durch und legen die Daten in meine Datenstruktur gehen. Ich möchte nur sicherstellen, dass dies der beste Weg ist, auf diese Daten zu übergeben, wenn es auch funktionieren.

War es hilfreich?

Lösung

Es sieht aus wie wird es funktionieren, und ich würde sagen, das ist wahrscheinlich der beste Weg, es zu tun. Aber warum fragen Sie hier, statt nur das Testen selbst?

Andere Tipps

Sie haben die alten Fehler der Prüfung gegen EOF im Zustand. EOF nicht gesetzt ist, bis Sie über das Ende der Datei versuchen und lesen. So wird diese Methode einen zusätzlichen Wert in den Vektor einzufügen, die Sie nicht wollen.

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)
    }
}

Sie .eof() auf einem Strom nicht in einem while-Zustand verwenden. Der Zustand wird auf true auswerten nur nach ein Versuch über das Ende der Datei zu lesen gemacht worden. eine bessere Art und Weise zu tun,

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

Ihre Nutzung von U ist fehlerhaft. Ich habe keine Ahnung, was es für verwendet wird. Einmal wird es als eine Art verwendet, aber dann ein anderes Mal, wenn Sie es an die insert Funktion als Wert übergeben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top