Προς το περιεχόμενο

C++ διάβασμα αρχείου


torq

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα σε όλους.

Έχω ένα αρχείο που σε κάθε γραμμή έχει έναν κωδικό(int) και την αντίστοιχη τιμή του(float).

Θέλω να διαβάσω το αρχείο και να αποθηκεύσω σε έναν πίνακα(δυναμικός) τους κωδικούς για τους οποίους η τιμή τους είναι πάνω από 10.

Το έκανα με χρήση vector μιας που πιστεύω ήταν η καλύτερη λύση.

Έχει να προτείνει κανείς κάτι καλύτερο;

 

Μορφή αρχείου (file.txt):

>
500 2,2
600 11
700 12,2

 

>int main()
{
   vector<int> vector1;
   int code;
   float timi;

   ifstream my_file("file.txt");

   while (!my_file.eof())
   {
       my_file>>code>>timi;//temp storage
       if(timi<5)
           vector1.push_back(code);
   }
   my_file.close();

   for(int i=0;i<vector1.size();i++)
           cout << vector1[i]<<endl;
}

 

και μια ερώτηση ακόμα.αν δεν είχα χρησιμοποιήσει vector και το έκανα με δυναμικό πίνακα μπορεί κάποιος να με βοηθήσει για το πως περίπου θα γίνοταν.πως θα προσθέτω κάθε φορά στον πίνακα το στοιχείο που θέλω(δηλαδή πως θα μεγαλώνει το μέγεθος του πίνακα)

Δημοσ.

Με δυναμικό πίνακα μπορεί να γίνει και ώς εξής:

>
 int * my_array = NULL;
 int size = 0;
 ...
 if(timi>10.0)
 {
   if (my_array == NULL)
     my_array = (int*)malloc(sizeof(int));
   else
   {
     my_array = (int*)realloc(my_array, (size+1)sizeof(int));
   }
   my_array[size] = code;
   size++;
 }

Δημοσ.
[ασχετος] Δε μου λετε πως δουλευει το αστερακι στη σι πλας πλας.

Επεισης, ifstream ειναι interface?

 

το * εχει να κανει με τους pointers .

 

το ifstream ειναι πραγματι μια κλαση που παρεχει ενα interface για να διαβαζεις δεδομενα απο αρχεια....

 

Καλο διαβασμα, και οτι απορια εδω ειμαστε...

Δημοσ.
[ασχετος] Δε μου λετε πως δουλευει το αστερακι στη σι πλας πλας.

Επεισης, ifstream ειναι interface?

 

το * εχει να κανει με τους pointers .

 

το ifstream ειναι πραγματι μια κλαση που παρεχει ενα interface για να διαβαζεις δεδομενα απο αρχεια....

 

Καλο διαβασμα, και οτι απορια εδω ειμαστε...

Δημοσ.

μπερδεμενα ...

Δε μπορω να καταλαβω πως δουλεβει αυτο

>
ainterface intr;
intr.DoSomething();

ενα interface δεν υποτιθετε πος υποστιρηζει πολλες κλασεις?

Ρε παιδι μου, πχ στη c# εχεις 2 κλασεις (classA classB) και ενα interface (iclass), η classA πχ διαβαζει ενα binary αρχειο και η classB ενα xml αρχειο και τελος το iclass περιεχει μια σηναρτηση (ReadValue).

Στο προγραμα οταν θελεις να διαβασεις ενα bin file κανεις το παρακατω

>
iclass i = [b]new classA{};[/b]
i.ReadValue();

 

τωρα στη cpp πως στο καλο κανεις αυτο το πραμα

>
iclass i;
i.ReadValue(); \\τι στο καλο θα διαβασει?

Δημοσ.

μπερδεμενα ...

Δε μπορω να καταλαβω πως δουλεβει αυτο

>
ainterface intr;
intr.DoSomething();

ενα interface δεν υποτιθετε πος υποστιρηζει πολλες κλασεις?

Ρε παιδι μου, πχ στη c# εχεις 2 κλασεις (classA classB) και ενα interface (iclass), η classA πχ διαβαζει ενα binary αρχειο και η classB ενα xml αρχειο και τελος το iclass περιεχει μια σηναρτηση (ReadValue).

Στο προγραμα οταν θελεις να διαβασεις ενα bin file κανεις το παρακατω

>
iclass i = [b]new classA{};[/b]
i.ReadValue();

 

τωρα στη cpp πως στο καλο κανεις αυτο το πραμα

>
iclass i;
i.ReadValue(); \\τι στο καλο θα διαβασει?

Δημοσ.

α, μαλιστα

 

Οταν η C# (ή η Java) λεει Interface εννοει ενα συγκεκριμενο ειδος "κλασεων" που (αν δε κανω λαθος) εχουν δηλωμενες καποιες member functions χωρις ομως implementation....

Στη C++ δεν υπαρχουν τετοια Interfaces, το αντιστοιχο στη C++ ειναι μια κλασση που εχει τουλ 1 pure virtual function. Αυτου του ειδους οι κλασεις στη C++ λεγονται abstract classes

 

Στο λινκ που σου εστειλα, οταν λεει interface, εννοει αυτο που σημαινει πραγματικα, δηλαδη το ifstream ειναι μια κλασση (κανονικη κλασση) που δινει τη δυνατοτητα στον προγραμματιστη να διαβασει τα δεδομενα απο ενα αρχειο σαν streams.

 

Ελπιζω να λυθηκε η παρεξηγηση

Δημοσ.

α, μαλιστα

 

Οταν η C# (ή η Java) λεει Interface εννοει ενα συγκεκριμενο ειδος "κλασεων" που (αν δε κανω λαθος) εχουν δηλωμενες καποιες member functions χωρις ομως implementation....

Στη C++ δεν υπαρχουν τετοια Interfaces, το αντιστοιχο στη C++ ειναι μια κλασση που εχει τουλ 1 pure virtual function. Αυτου του ειδους οι κλασεις στη C++ λεγονται abstract classes

 

Στο λινκ που σου εστειλα, οταν λεει interface, εννοει αυτο που σημαινει πραγματικα, δηλαδη το ifstream ειναι μια κλασση (κανονικη κλασση) που δινει τη δυνατοτητα στον προγραμματιστη να διαβασει τα δεδομενα απο ενα αρχειο σαν streams.

 

Ελπιζω να λυθηκε η παρεξηγηση

Δημοσ.

Αντιθετα απο την C++ ..στην Java, C# και VB.NET απαγορευεται η πολλαπλη κληρονομικοτητα, γιαυτο το λογο επινοηθηκε η εννοια του interface.

Δημοσ.

Αντιθετα απο την C++ ..στην Java, C# και VB.NET απαγορευεται η πολλαπλη κληρονομικοτητα, γιαυτο το λογο επινοηθηκε η εννοια του interface.

Δημοσ.

Διλαδι το interface στη cpp ειναι μια base class (abstrac class) ... μαλιστα...

δε με λες , πως διλονετε? ως class ή interface και τελος, οταν λεμε API το I ειναι

interface αλα cpp ? για αυτο , σκαλονα σηνεχια στα apis.. κατι μαθαμε και σημερα:-D

 

 

Ααα... και καατι τελευτεο.

Πως διλονω μια κλαση στη cpp ?(οχι static functions)

Στη C# το κανεις με το new (classA a=new classA{};), προσπαθησα να το κανω ετσι και στη cpp αλα δεν...

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...