c++ inputfile naam lezen

  • Onderwerp starter Onderwerp starter EotT
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

EotT

Nieuwe gebruiker
Lid geworden
18 apr 2006
Berichten
3
Als je een programma hebt gemaakt, dat je via de commandline kan oproepen met bv programma < inputfile.txt (inputfile.txt is steeds veranderlijk), is er dan een mogenlijkheid om vanuit je programma te weten te komen hoe dit bestand noemt?
Als ik gewoon die met std::cout lees, zie ik rare dingen zoals 0x804d2d8.
Ik zou de naam moeten kunnen hebben van het bestand, om er dan mee een ander bestand mee te kunnen maken, met dezelfde naam, maar een andere extentie en andere inhoud.
Iemand een idee hoe je dit moet doen?
bedankt!
 
Als je een programma hebt gemaakt, dat je via de commandline kan oproepen met bv programma < inputfile.txt (inputfile.txt is steeds veranderlijk), is er dan een mogenlijkheid om vanuit je programma te weten te komen hoe dit bestand noemt?
Als ik gewoon die met std::cout lees, zie ik rare dingen zoals 0x804d2d8.
Ik zou de naam moeten kunnen hebben van het bestand, om er dan mee een ander bestand mee te kunnen maken, met dezelfde naam, maar een andere extentie en andere inhoud.
Iemand een idee hoe je dit moet doen?
bedankt!

Simpelste lijkt me om i.p.v.
Code:
programma < inputfile.txt
Code:
 programma inputfile
te doen.
je moet je main dan al volgt aanpassen:
Code:
int main( int argc, char* argv[] )

argc is het aantal argumenten ( steeds 1 meer dan je hebt meegegeven )
argv[] zijn de namen die je hebt meegegeven. argv[0] = "programma", argv[1] = "inputfile.txt"

Je moet dan wel ook nog in je code de meegegeven file openen. En daar het algoritme dat je geschreven hebt op loslaten. Normaal gezien is dit een kleine aanpassing.
 
Code:
int main(int argc, char *argv[])
{
    if(argc == 2) 
       std::cout << argv[1] << std::endl;
    return 0;
}

edit: beetje te laat. :-)
 
Bedankt :)

Maar is het mogenlijk op die andere manier? of niet?
 
Bedankt :)

Maar is het mogenlijk op die andere manier? of niet?

There are always three default "files" open, stdin (the keyboard), stdout (the screen), and stderr (error messages output to the screen). These, and any other open files, can be redirected. Redirection simply means capturing output from a file, command, program, script, or even code block within a script (see Example 3-1 and Example 3-2) and sending it as input to another file, command, program, or script.

Ik ben er niets 100% zeker van dat het niet mogelijk is, maar het lijkt me logisch van niet. De input redirection zal immers niet verzorgd worden door het c(++)-programma, maar door je shell ( dos bij windows ). Deze shell zal de file openen en de inhoud ervan meegeven aan het programma. Het programma zelf zal dus volgens mij niet in contact komen met de bestandsnaam.
 
ok, bedankt!
Ik zet deze dan op opgelost.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan