Ik ben opzoek naar een manier om tekst naar een tekstfile weg te schrijven (en uit te lezen) onder visual C++ 6. Ik heb wel al wat informatie gevonden, maar daar kwam ik geen wijs uit, dus ik hoop eigenlijk dat er hier iemand is die het simpel kan uitleggenl.
Verwijderd
Beetje basic dit hoor, kijk of in je msdn cd'tjes bij "using file i/o" voor de win32 manier, of een willekeurig c(++) boek voor de standaard c(++) oplossing..
gewoon een file openen, en dan kun je de tekst die daarin staat gewoon met fread() lezen naar een array of een pointer, en wat daar staat kun je rechtstreeks op je scherm pleuren. Je kunt het ook naar de console schrijven ipv naar een buffer, of direct naar je videogeheugen. (Onee, VC++ waardeert dat niet zo denk ik
). TXT file schrijven is hetezelfde: vanaf een bepaalde pointer of uit een array open je een file om te schrijven, en je schrijft die buffer weg met de grootte van de buffer.
[niet-serieus-modus]
textfiles openen, lezen en schrijven in Visual C++?
Nou, je doet file -> open, en dan selecteer je je bestand (je moet nog wel even het filter op *.txt zetten)
En dan zie je in het scherm wat er in staat, en dan kun je dingen aanpassen, en met file -> save schrijf je m weer weg. Of met file -> save As kun je m onder een andere naam opslaan
om een nieuw tekstbestand aan te maken doe je file -> new

[/niet-serieus-modus]
textfiles openen, lezen en schrijven in Visual C++?
Nou, je doet file -> open, en dan selecteer je je bestand (je moet nog wel even het filter op *.txt zetten)
En dan zie je in het scherm wat er in staat, en dan kun je dingen aanpassen, en met file -> save schrijf je m weer weg. Of met file -> save As kun je m onder een andere naam opslaan
om een nieuw tekstbestand aan te maken doe je file -> new
[/niet-serieus-modus]
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Verwijderd
Oooooooooooooooooh Oisyyyyyyyyyyyyyyyyyyyn!
Help die arme jongen nou gewoon eventjes!
He! Jij altijd met je flauwe grapjes.
Heuw!
(ondertussen geniet ik er stiekum wel van hoor...
)
Maareh... als je uit tekstbestanden wil lezen moet je dus even aan de slag met functies als fopen(), fread() en fwrite(). Er zijn nog wat andere manieren om het te doen, maar als je eerst hier eens mee gaat experimenteren, zul je al een heel eind komen.
Help die arme jongen nou gewoon eventjes!
He! Jij altijd met je flauwe grapjes.
Heuw!
(ondertussen geniet ik er stiekum wel van hoor...
Maareh... als je uit tekstbestanden wil lezen moet je dus even aan de slag met functies als fopen(), fread() en fwrite(). Er zijn nog wat andere manieren om het te doen, maar als je eerst hier eens mee gaat experimenteren, zul je al een heel eind komen.
Effe niet letten op de grappenmakers die met fread komen aanzetten. Die hebben C++ niet meer gevolgd sinds 1986. 
In C++ doe je alle tekst I/O via iostreams. De Input File IOstream heet std::ifstream; de output heet std::ofstream.
Een regel lezen doe je met std::getline().
In C++ doe je alle tekst I/O via iostreams. De Input File IOstream heet std::ifstream; de output heet std::ofstream.
Een regel lezen doe je met std::getline().
Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein
fopen/fread/fwrite/fclose heerst, en ga nu je mond spoelen
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Als ie een beginner is en toch met visual c++ 6 werkt kan ie beter de MFC class CFile gebruiken... Lekker makkelijk.
uhm... je gebruikt 'MFC' en 'makkelijk' in dezelfde zin... dat is niet correct nederlands 
Maar je kan het beter gewoon de ANSI C++ methode leren dan die van MFC wat alleen met Visual C++ werkt. En dan kun je wel zeggen 'lekker makkelijk', maar wat nou als ie ineens een ander platform voor z'n neus heeft staan? Dan kan ie het ineens niet meer
Maar je kan het beter gewoon de ANSI C++ methode leren dan die van MFC wat alleen met Visual C++ werkt. En dan kun je wel zeggen 'lekker makkelijk', maar wat nou als ie ineens een ander platform voor z'n neus heeft staan? Dan kan ie het ineens niet meer
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Da's wel leuk, maar niet veel programmeurs veranderen elke dag van platform... Dat het generieker is betekent niet dat het beter is. De MFC neemt vooral in het begin heel veel zooi over, zodat je eerst goed in het programmeren kan komen.Op vrijdag 30 november 2001 15:51 schreef OiSyN het volgende:
uhm... je gebruikt 'MFC' en 'makkelijk' in dezelfde zin... dat is niet correct nederlands
Maar je kan het beter gewoon de ANSI C++ methode leren dan die van MFC wat alleen met Visual C++ werkt. En dan kun je wel zeggen 'lekker makkelijk', maar wat nou als ie ineens een ander platform voor z'n neus heeft staan? Dan kan ie het ineens niet meer
ik zeg niet dat het 'beter' is, ik zeg dat als je het toch aan moet leren je het gelijk goed kunt aanleren door een standaard te kiezen ipv iets wat maar op 1 platform werkt
bovendien is een simpel projectje zonder MFC veel makkelijker op te zetten dan met MFC, dus ik betwijfel zelfs nog hoeveel het makkelijker is
bovendien is portable code ook een stuk makkelijker voor later als je ineens wel van platform wil wisselen. Als jij alles wilt herschrijven moet jij dat weten, maar voor veel mensen is een standaard gebruiken een betere oplossing
bovendien is een simpel projectje zonder MFC veel makkelijker op te zetten dan met MFC, dus ik betwijfel zelfs nog hoeveel het makkelijker is
bovendien is portable code ook een stuk makkelijker voor later als je ineens wel van platform wil wisselen. Als jij alles wilt herschrijven moet jij dat weten, maar voor veel mensen is een standaard gebruiken een betere oplossing
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Op zich is het wel een goed idee om de basis van het programmeren eerst te leren alvorens voorgebakken componenten te gebruiken.Op vrijdag 30 november 2001 16:02 schreef OiSyN het volgende:
ik zeg niet dat het 'beter' is, ik zeg dat als je het toch aan moet leren je het gelijk goed kunt aanleren door een standaard te kiezen ipv iets wat maar op 1 platform werkt
bovendien is een simpel projectje zonder MFC veel makkelijker op te zetten dan met MFC, dus ik betwijfel zelfs nog hoeveel het makkelijker is
Alleen met dat tweede ben ik het niet eens; In visual c++ 6 doe je new project, console app, MFC support en klaar.
En dat voor iemand die meer C++ topics wil zien. Tsk.Op vrijdag 30 november 2001 00:52 schreef OiSyN het volgende:
fopen/fread/fwrite/fclose heerst, en ga nu je mond spoelen
Mijn operator<< doet't niet op FILE*s.
Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein
Ja, en dan meot je opgeven hoe je MFC gelinkt wil hebben.Op vrijdag 30 november 2001 16:07 schreef The End het volgende:
[..]
Alleen met dat tweede ben ik het niet eens; In visual c++ 6 doe je new project, console app, MFC support en klaar.
Een project zonder MFC gaat gewoon via
new project, console app, no MFC support, en da's alles.
Het belangrijste probleem met MFC is dat het oud is. Template's hadden ze nog niet, dus voor std::vector<T> hebben ze 10 alternatieven (CByteArray en zo) die samen nog minder kunnen. CMyClassArray hebben ze niet.
Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein
#include <fstream.h>
ifstream leesvar; //voor input
ofstream schrijfvar; //voor output
leesvar.open("bestandsnaam");
//opgelet : c:\bla.txt wordt c:\\bla.txt
schrijfvar.open("bestandsnaam");
//idem
leesvar>>var; //om lijn 1 van input in var in te lezen, idd, leest PER LIJN
schrijfvar<<var; //inhoud van var naar filetje
of var=leesvar.get(); //teken per teken
op einde je streams sluiten
leesvar.close();
schrijfvar.close();
EOF (end of file) detecteer je pas NA leesoperatie !
en controlleer je met leesvar.eof()
bv if(leesvar.eof()) stopermee
ifstream leesvar; //voor input
ofstream schrijfvar; //voor output
leesvar.open("bestandsnaam");
//opgelet : c:\bla.txt wordt c:\\bla.txt
schrijfvar.open("bestandsnaam");
//idem
leesvar>>var; //om lijn 1 van input in var in te lezen, idd, leest PER LIJN
schrijfvar<<var; //inhoud van var naar filetje
of var=leesvar.get(); //teken per teken
op einde je streams sluiten
leesvar.close();
schrijfvar.close();
EOF (end of file) detecteer je pas NA leesoperatie !
en controlleer je met leesvar.eof()
bv if(leesvar.eof()) stopermee
"I think there is a world market for maybe five computers" - Thomas Watson, chairman of IBM, 1943
Verwijderd
nu we toch fijn met z'n allen een MFC vs the universe draad aan het maken zijn, iemand al es naar WTL gekeken?
Verwijderd
#define AANTALCHARS 10240
char leesbuf[AANTALCHARS * sizeof(char)];
#include <fstream.h>
[i]#include <stdio.h></i>
ifstream leesvar; //voor input
FILE *leesvar; // voor input
ofstream schrijfvar; //voor output
FILE *schrijfvar; // voor output
leesvar.open("bestandsnaam");
leesvar = fopen("bestandsnaam", "r");
//opgelet : c:\bla.txt wordt c:\\bla.txt
schrijfvar.open("bestandsnaam");
schrijfvar = fopen("anderebestandsnaam", "w");
//idem
leesvar>>var; //om lijn 1 van input in var in te lezen, idd, leest PER LIJN
schrijfvar<<var; //inhoud van var naar filetje
fread(leesbuf, sizeof(char), AANTALCHARS, leesvar);
of var=leesvar.get(); //teken per teken
bah...
op einde je streams sluiten
leesvar.close();
fclose(leesvar);
schrijfvar.close();
fclose(schrijfvar);
EOF (end of file) detecteer je pas NA leesoperatie !
en controlleer je met leesvar.eof()
bv if(leesvar.eof()) stopermee
if (feof(leesvar)) stopermee
dat is omdat c(++) er niet uit ziet als ondertitelOp zaterdag 01 december 2001 13:29 schreef MSalters het volgende:
[..]
En dat voor iemand die meer C++ topics wil zien. Tsk.
En ik vind het loos om te zeggen dat als je in C++ werkt dat je dan ineens niet meer de oude clib mag gebruiken ofzo
Waarom niet?Mijn operator<< doet't niet op FILE*s.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| class Blaat
{
private:
int i;
public:
Blaat (int _i) : i (_i) { }
friend FILE * operator << (FILE * f, const Blaat & b);
};
FILE * operator << (FILE * f, const Blaat & b)
{
fprintf (f, "Blaat (%d)", b.i);
return f;
} |
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Verwijderd
Wat is er mis met newbies de basics aanleren alvorens ze richting streams te sturen ?Op vrijdag 30 november 2001 00:40 schreef MSalters het volgende:
Effe niet letten op de grappenmakers die met fread komen aanzetten. Die hebben C++ niet meer gevolgd sinds 1986.
In C++ doe je alle tekst I/O via iostreams. De Input File IOstream heet std::ifstream; de output heet std::ofstream.
Een regel lezen doe je met std::getline().
Als we dit niet doen krijgen we allemaal van die patsertjes die denken 'C++' te kunnen omdat ze cout's gebruiken
Is een template. B.v. std::pair : (nee, da's niet van mij)Op zaterdag 01 december 2001 15:51 schreef OiSyN het volgende:
[..]
dat is omdat c(++) er niet uit ziet als ondertitel
En ik vind het loos om te zeggen dat als je in C++ werkt dat je dan ineens niet meer de oude clib mag gebruiken ofzo
[..]
Waarom niet?
template< typename First, typename Second >
ostream& operator<< ( ostream& os, pair<First,Second> p )
{
return os << p.first << p.second;
}
En ik mag geen FILE* operator<< (FILE*, std::type )
schrijven. Functies moeten afhangen van tenminste een
van mijn namen (mijn type, of in mijn namespace).
Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein
Moet zijn <fstream>.Op zaterdag 01 december 2001 14:43 schreef G8KeePeR het volgende:
#include <fstream.h>
Moet zijnifstream leesvar; //voor input
ofstream schrijfvar; //voor output
leesvar.open("bestandsnaam");
//opgelet : c:\bla.txt wordt c:\\bla.txt
schrijfvar.open("bestandsnaam");
//idem
code:
1
| std::fstream leesvar("bestandsnaam"); |
Dan is de file meteen open. Dichte files heb je niks aan.
Commentaar op \\ klopt wel, maar volgens mij kun je in Win32 progs ook gewoon / gebruiken.
Valt dus tegen. Afhankelijk wat var is, leest dit een var object. Als var een string is leest't een woord.leesvar>>var; //om lijn 1 van input in var in te lezen, idd, leest PER LIJN
Dus niet, dat doet je destructor voor je. Is ook veel betrouwbaarder; de dtor runt altijd, hoe je de fstream ook afdankt.schrijfvar<<var; //inhoud van var naar filetje
of var=leesvar.get(); //teken per teken
op einde je streams sluiten
leesvar.close();
schrijfvar.close();
Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein
Op zondag 02 december 2001 12:21 schreef Codin het volgende:
[..]
Wat is er mis met newbies de basics aanleren alvorens ze richting streams te sturen ?
Als we dit niet doen krijgen we allemaal van die patsertjes die denken 'C++' te kunnen omdat ze cout's gebruiken
Streams ZIJN de basics.
Zie TC++PL:
code:
1
| std::cout << "Hello, world" << std::endl; |
fopen/fclose mist het essentiele C++ idee, dat dingen die in paren gaan, door een ctor/dtor paar gedaan worden. Dat is waar de hele taal op gebouwd is, met exceptions etcetera. Nu hoef je niet te weten waarom, maar het concept van een dtor die de dingen opruimt, moet je wel kennen.
Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein
Pagina: 1