|
| Argument til en fil Fra : SMB |
Dato : 19-12-02 18:51 |
|
Hej jeg er helt nybegynder med c++, er der nogen der kan fortælle mig hvad
det betyder når man bliver bedt om at "Skrive et objekt der er argument til
en fil" ??
kom evt. med et kode eksempel.
Svar venligst hurtigt det haster lidt.
mvh
smb
| |
Martin Moller Peders~ (19-12-2002)
| Kommentar Fra : Martin Moller Peders~ |
Dato : 19-12-02 22:46 |
|
In <3e02070d$0$71693$edfadb0f@dread11.news.tele.dk> "SMB" <baaz@mail.dk> writes:
>Hej jeg er helt nybegynder med c++, er der nogen der kan fortælle mig hvad
>det betyder når man bliver bedt om at "Skrive et objekt der er argument til
>en fil" ??
>kom evt. med et kode eksempel.
En der ikke har lavet sine lektier ?
/Martin
| |
Ukendt (20-12-2002)
| Kommentar Fra : Ukendt |
Dato : 20-12-02 08:57 |
|
On Thu, 19 Dec 2002 18:51:12 +0100, "SMB" <baaz@mail.dk> wrote:
>Hej jeg er helt nybegynder med c++, er der nogen der kan fortælle mig hvad
>det betyder når man bliver bedt om at "Skrive et objekt der er argument til
>en fil" ??
>kom evt. med et kode eksempel.
>
>Svar venligst hurtigt det haster lidt.
>
>mvh
>smb
>
Det står mig lidt uklart hvad du mener, men det der kommer nærmest i
min hukommelse er "Command-Line Arguments". Jeg har fundet
nedenstående lille program frem, som kopierer en fil ind i en anden
fil. Hvis koden kompileres til en .exe-fil med navnet "copy", bruges
det ved at skrive:
copy InputFilNavn OutputFilNavn
i prompten når programmet skal exekveres. Hvad programmet gør er i
denne sammenhæng underordnet. Det der ligger i det er, at man kan
skrive et antal argumenter efter program-navnet. Disse argumenter
bruges i programmet vha. argc og argv. argc er antallet af
kommandolinie argumenter (incl. selve programnavnet! argc = 3 i dette
eksempel) og argv er et array af strenge hvor argumenterne gemmes. På
denne måde kan du vha. almindelig array-indexering anvende de
forskellige argumenter. Læg mærke til den altrernative måde "main"
skal skrives på.
Det er ikke sikkert at det er det der menes med at "Skrive et objekt
der er argument til en fil", men det kommer da lidt tæt på (selvom der
ikke er meget objekt i eksemplet!).
/Jesper G
// Using command-line arguments
#include <iostream>
using std::cout;
using std::endl;
using std::ios;
#include <fstream>
using std::ifstream;
using std::ofstream;
int main( int argc, char *argv[] )
{
if ( argc != 3 )
cout << "Usage: copy infile outfile" << endl;
else {
ifstream inFile( argv[ 1 ], ios::in );
if ( !inFile ) {
cout << argv[ 1 ] << " could not be opened" << endl;
return -1;
}
ofstream outFile( argv[ 2 ], ios::out );
if ( !outFile ) {
cout << argv[ 2 ] << " could not be opened" << endl;
inFile.close();
return -2;
}
while ( !inFile.eof() )
outFile.put( static_cast< char >( inFile.get() ) );
inFile.close();
outFile.close();
}
return 0;
}
| |
Igor V. Rafienko (20-12-2002)
| Kommentar Fra : Igor V. Rafienko |
Dato : 20-12-02 13:15 |
|
[ Jesper G. ]
[ ... ]
> int main( int argc, char *argv[] )
> {
> if ( argc != 3 )
> cout << "Usage: copy infile outfile" << endl;
> else {
> ifstream inFile( argv[ 1 ], ios::in );
ios::in er et default argument til ifstream sin constructor.
[ ... ]
> ofstream outFile( argv[ 2 ], ios::out );
Tilsvarende her.
[ ... ]
> while ( !inFile.eof() )
> outFile.put( static_cast< char >( inFile.get() ) );
Man bør nok sjekke stream status _etter_ en {lese,skrive}operasjon. Du
risikerer å ende opp i en situasjon hvor du begynner å skrive
ikke-eksisterende bytes. Forresten, hva er galt med:
outFile << inFile.rdbuf();
ivr
--
<peder> igorr: tcl ja... det er fra de dypeste avgrunnene i helvete det...
<peder> php er bare fra foajeen
-- pederst på irc
| |
|
|