/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
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

Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31964
Nyheder : 719565
Indlæg : 6408200
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste