[ Pretender @ 23.04.2004. 22:11 ] @
Ko o cemu, ja o command lajnu.
Code:
//: S07:Text.cpp
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

class Text {
    string text;
public:
    Text() {}
    Text(const string& fname) {
        ifstream ifs(fname.c_str());
        string line;
        while (getline(ifs, line))
            text += line + '\n';
    }
    string contents() {
        return text;
    }
};

int main(int argc, char* argv[]) {
    if (argc > 1)
    {
        Text t1;
        Text t2(argv[1]);
        cout << "t1 :\n" << t1.contents() << endl;
        cout << "t2 :\n" << t2.contents() << endl;
    }
}
///:~

Kako god da prosledim ime neke datoteke kao argv[1] u kom.liniji, na izlazu dobijem samo
t1:
t2:
iako bi posle t2 trebalo da sledi sadrzaj doticne datoteke.

Posto je argument pointer, trbalo bi u kom.liniji da prosledim adresu fajla, ali kako ?
Kompajler je Dev-Cpp.

TX
[ Časlav Ilić @ 24.04.2004. 05:59 ] @
Taj program radi baš kako treba, možda si u komandnoj liniji zadao nepostojeću datoteku... U principu je dobro da kad god otvaraš datoteku proveriš da li je zaista i otvorena, tj. mogao bi funkciju Text(const string& fname) da napišeš kao:

Code:
Text(const string& fname) {
        ifstream ifs(fname.c_str());
        if (ifs) {
            string line;
            while (getline(ifs, line))
                text += line + '\n';
        }
        else
            cout << "Text::Text: Cannot open file " << fname << endl;
    }

[ Pretender @ 24.04.2004. 13:06 ] @
Ne sumnjam da program radi dobro, samo ne znam kako da ispravno prosledim ime fajla.
Prosirio sam konstruktor Text, kako si predlozio, i on redovno izbacuje poruku: Cannot open file ...
Ako npr. u direktorijumu PROJEKTI (u koji Dev smesta sve fajlove), imam ImeFajla.cpp , ja u kom. liniju stavim >Text (ImeFajla) ili >Text (ImeFajla.cpp) ili >Text ("ImeFajla.cpp") u cemu ocigledno gresim, jer program ne moze da otvori trazeni fajl.
Ne koristim nepostojece fajlove; ni >Text (Text.cpp) /itd/ ne daje rezultat.

TX
[ Časlav Ilić @ 24.04.2004. 14:39 ] @
U tom slučaju, ubij me ako znam u čemu je problem :) Evo baš sam isprobao program, kada ga normalno pokrenem, ./testprog testprog.cc, normalno i dobijem listing datoteke testprog.cc u konzoli.
[ Pretender @ 24.04.2004. 17:42 ] @
Ipak si mi pomogao!
Tvoj post (primer) me je podsetio da argumente u komandnoj liniji ne treba stavljati u zagrade ;))

Besten Dank
[ milanche @ 24.04.2004. 19:44 ] @
Takodje je vrlo dobra praksa da svaki command-line argument stavljas u duple navodnike.

Razlog:
recimo da se fajl nalazi u C:\Documents and Settings\Pretender\Desktop.
Kad ne bi bilo navodnika, moglo bi se greskom shvatiti da ima tri argumenta
(prvi bi bio 'C:\Documents', drugi 'and' i treci 'Settings\Pretender\Desktop').

Svi komercijalni programi su pravljeni da korektno izdvajaju sve izmedju duplih
navodnika, a da same duple navodnike uklanjaju. Za svoj program moras da se
sam potrudis da ga napravis da sledi trend, sto nije mnogo tesko.