Jump to content




Achillf

Recommended Posts

Δημοσιεύτηκε

Καλησπερα παιδια... εχω γραψει εναν κωδικα για c++ ετσι ωστε να διαβαζει ενα αρχειο και στην σινεχεια να συμπληρωνει μια λεξη ή ενα κειμενο κατω απο το υπαρχον κειμενο του αρχειου...Ολα ωραια και καλα, δημιουργω ενα .txt στον φακελο οπου τρεχω το project και στο fstream a; δινω την διευθυνση a.open("arxeio.txt"); .. Το project δουλευει αψογα. Το προβλημα μου ειναι οτι θελω το project να παραμεινει τον φακελο του και να διαβαζει ενα αρχειο στην επιφανεια εργασιας.. Αλλαζω τον κωδικα σε: a.open("C:\Users\Achill\Desktop\arxeio.txt"); (Οπου Achill το ονομα του user(φακελου)) , τρεχει το project χωρις error αλλα δεν κανει την δουλεια και παραμενει ανοιχτο.. Θελω να μου πειτε αν υπαρχει καποια λυση πανω στο θεμα αυτο και επισης αν μπορει η C++ να εντοπιζει το ονομα του user αυτοματα (δλδ το Achill σε αυτη την περιπτωση)... Ευχαριστω εκ των προτερων.

Παρακατω ακολουθει ο κώδικας:

#include <string>
#include <fstream>
#include <iostream>


main () {
std::string arxeio="C:\Users\Achill\Desktop"; //topothesia arxeiou
ifstream pernw(arxeio.c_str());
std::string keimeno;
char ch;
pernw.get(ch);
while (!pernw.eof()) {
keimeno=keimeno+ch;
pernw.get(ch);
}
pernw.close();
ofstream dinw(arxeio.c_str());
std:string a="text"; //ti theleis na grapseis apo katw
dinw<<keimeno;
dinw<<endl<<a;
}


#include <iostream>
#include <fstream>
#include <cstdio>
#include <cstdlib>
#include <string>
#include <direct.h>

using namespace std;

int main(int argc, char *argv[])
{
fstream filestream;
char FilenameBuffer[FILENAME_MAX] = "";
char CurrentDir[FILENAME_MAX] = "";
char Buffer[BUFSIZ] = "";
/* Get a filename from the user. */
memset(Buffer, 0, sizeof(Buffer));
strcpy(FilenameBuffer, "C:\\Users\\<Εδώ πάει το όνομα του προφίλ σου>\\Desktop\\contents.txt");
filestream.open(FilenameBuffer, fstream::in);
while(filestream.getline(Buffer, sizeof(Buffer)) != NULL)
{
cout << Buffer << "\n";
}
/* Close file. */
filestream.close();
cout << "Hit enter to continue...\n";
cin.get();
return 0;
}

Όταν θέλεις να δίνεις άλλο μονοπάτι θα πρέπει να δίνεις το \\ για να κάνεις με αυτό τον τρόπο esc στο \, δες το παράδειγμα μου.

Πέρα από την απορία, ακόμα και στην c++ είναι προτιμότερη και πιο βέλτιστη η χρήση του standard i/o της stdlib (FILE, fopen, fclose κτλ) και καλό είναι να αποφεύγονται τα streams... αυτό δεν σημαίνει ότι θα έχεις κάποιο πρόβλημα με την χρήση των streams...

Επίσης πάντα να ελέγχεις τα paths και τα returns από τα functions και να κάνεις error handling...

Archived

This topic is now archived and is closed to further replies.

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

Important Information

Ο ιστότοπος theLab.gr χρησιμοποιεί cookies για να διασφαλίσει την καλύτερη εμπειρία σας κατά την περιήγηση. Μπορείτε να προσαρμόσετε τις ρυθμίσεις των cookies σας , διαφορετικά θα υποθέσουμε ότι είστε εντάξει για να συνεχίσετε.