Avatar billede Slettet bruger
26. november 2001 - 12:20 Der er 11 kommentarer og
3 løsninger

Vector med objecter

Jeg skal have fyldt en vector med objekter. Mit program ser således ud:



    //åbner en fil
    ifstream File;
    File.open(filename.c_str());
       
    char line[2000];
    char * pch;
   
    while(File.eof())
    {
        Incident newIncident;
        //Læs første linie
        NessusFile.getline(line, 2000);
        //Inddel i tokens og indsæt i object
          pch = strtok (line,\"|\");
         
          if(pch == NULL)
              break;
     
      newIncident.SetIP(pch);
     
      pch = strtok (NULL, \"|\");   
      pch = strtok (NULL, \"|\");
     
      newIncident.SetID(pch);
       
        vector_incident.push_back(newIncident);
    }   
   
    for(int i = 0; i < 10; i++)
        cout << vector_incident[i].GetIP();
}

Når jeg køre den sidste for løkke er vectoren tom. Hvad gør jeg galt??   
Avatar billede mickni33 Nybegynder
26. november 2001 - 12:24 #1
skal du ikke skrive

File>>NessusFile.getline

og ikke
NessusFile.getline(line, 2000);

     
Avatar billede disky Nybegynder
26. november 2001 - 12:25 #2
hvor opretter du dit vector object ?
Avatar billede mickni33 Nybegynder
26. november 2001 - 12:25 #3
Du bruger slet ikke File>> til at læse ind nogle steder
Avatar billede jpk Nybegynder
26. november 2001 - 12:36 #4
Hvad med
while(!File.eof())
istedet for
while(File.eof())

Avatar billede Slettet bruger
26. november 2001 - 12:43 #5
Der er intet i galt med fillæsningen, det virker fint hvis jeg skriver værdierne ud inde i while løkken. Jeg opretter min vector i .h:

public:
vector<Incident> vector_incident;
Avatar billede disky Nybegynder
26. november 2001 - 12:45 #6
som jpk skrive er din while() forkert.

ligenu gør den noget sålænge EOF er nået !!
Avatar billede mickni33 Nybegynder
26. november 2001 - 12:54 #7
JPK har helt ret prøv det så virker det
Avatar billede Slettet bruger
26. november 2001 - 13:20 #8
Har prøvet, stadig det samme : (
Avatar billede disky Nybegynder
26. november 2001 - 13:22 #9
så debug dig igennem koden og se hvor det går galt, eller start forfra og tænkt problemmet igennem igen. Hjælper ret tit.
Avatar billede jpk Nybegynder
26. november 2001 - 13:24 #10
Er du sikker på di vector er tom?
Du kan fx prøve:
cout << vector_incident.size() << endl;

Prøv også at sætte endl på i dine andre outputs, for at sikre at bufferen bliver tømt!


Avatar billede jpk Nybegynder
26. november 2001 - 13:30 #11
Har du implementeret en copy-constructor for Incident?

Avatar billede jpk Nybegynder
26. november 2001 - 13:32 #12
Hvorfor bruger du 2 forskellige streams???

File og NessusFile

det er lidt noget rod! Du læser fra den ene, så længe den anden er eof - det giver ingen mening!
Avatar billede disky Nybegynder
26. november 2001 - 13:34 #13
jpk: som jeg skrev, slet det hele og tænkt det igennem først.
Avatar billede alvion Nybegynder
26. november 2001 - 15:04 #14
Lad os se definitionen af klassen Incident
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Lead DevSecOps

Netcompany A/S

Linux Operations Engineer

Netcompany A/S

Senior Network Engineer

Capgemini Danmark A/S

SAP S/4HANA Business Controlling