Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Ime fajla u promenjivoj ne radi?

[es] :: C/C++ programiranje :: C/C++ za početnike :: Ime fajla u promenjivoj ne radi?

[ Pregleda: 2661 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Zed Mc Jack
Programer
Bečej

Član broj: 93120
Poruke: 137
79.101.147.*

Sajt: www.subakov.com


Profil

icon Ime fajla u promenjivoj ne radi?23.05.2008. u 10:03 - pre 193 meseci
Nedavno sam počeo da učim C++ i to radeći iz dve knjige uporedo.
Prva je Thinking in C++, a druga Beginning C++ Game Programming, taman da spojim korisno i zanimljivo.

Elem, još sam na samom početku i u toku su lekcije iz petlji i slično, međutim s obzirom da dolazim iz sveta baza podataka i Visual FoxPro-a, neke mi stvari nisu jasne.

Evo jedne od njih...
Code:

#include <iostream>
#include <fstream>
#include <vector>
#include <string>

using namespace std;

int main()
{
    string words;
    int broj=0;
    vector <string> word;
    cout << "The word counter \n";
    
    ifstream in("The area of circle.cpp");
    while (in >> words){
    ++broj;
    }
    cout << "There are " << broj << " words in the program.";
    system("PAUSE");
}


Ja sam hteo da promenim program tako da umesto ovog određenog fajla, može da izbroji reči iz bilo kojeg fajla, koji mu korisnik unese. Pa sam tako izmenio kod da on sada izgleda ovako:
Code:

//Prethodni deo izostavljen
    string fajl, words;
    int broj=0;
    vector <string> word;
    cout << "The word counter \n\n";
    cout << "Enter the file name: ";
    cin >> fajl;
    ifstream in(fajl);
//ostatak izostavljen

I sada program puca i odbija kompajliranje na liniji
Code:
ifstream in(fajl);

sa porukom 16 C:\Dev-Cpp\Projekti\Word Counter.cpp no matching function for call to `std::basic_ifstream<char, std::char_traits<char> >::basic_ifstream(std::string&)'

Ako može neko da pojasni, šta ne valja i kako bi trebalo da glasi kod.
www.subakov.com Jedini Visual FoxPro sajt u Srbiji
 
Odgovor na temu

karas

Član broj: 5574
Poruke: 482
*.static.sbb.rs.



+1 Profil

icon Re: Ime fajla u promenjivoj ne radi?23.05.2008. u 15:05 - pre 193 meseci
Probaj da ime fajlu zadajes kao C string a ne preko C++ klase string, dakle sa
Code:

ifstream in(fajl.c_str());


Sveti Avgustin: "Dobar hrišćanin treba da se kloni matematičara i svih onih koji daju lažna proročanstva. Postoji opasnost da su matematičari već sklopili pakt sa Đavolom, da pomrače čovekov um i da ga okuju okovima pakla."
 
Odgovor na temu

Zed Mc Jack
Programer
Bečej

Član broj: 93120
Poruke: 137
91.102.226.*

Sajt: www.subakov.com


Profil

icon Re: Ime fajla u promenjivoj ne radi?23.05.2008. u 21:09 - pre 193 meseci
OK, sada nema greške, ali ne radi kako treba, to jest, uvek izbroji 0 reči.
Proverio sam i problem su prazna mesta u imenu fajla.

Kako da se ovo prevaziđe?

Uzgred budi rečeno zašto C++ string klasa ima problem, a C_str() ne?
Zvuči mi kao metoda za obradu ulaznog stringa, ali možda grešim.
www.subakov.com Jedini Visual FoxPro sajt u Srbiji
 
Odgovor na temu

karas

Član broj: 5574
Poruke: 482
*.dynamic.sbb.rs.



+1 Profil

icon Re: Ime fajla u promenjivoj ne radi?24.05.2008. u 10:24 - pre 193 meseci
Ne znam u čemu je problem, stavi kod.
fstream prihvata ime fajla kao C string a ne kao C++ klasu string - pogledaj dokumentaciju. string::c_str() vraća C string (opet vidi dokumentaciju) koji se onda može poslati fstream konstruktoru.

Sveti Avgustin: "Dobar hrišćanin treba da se kloni matematičara i svih onih koji daju lažna proročanstva. Postoji opasnost da su matematičari već sklopili pakt sa Đavolom, da pomrače čovekov um i da ga okuju okovima pakla."
 
Odgovor na temu

xeron
Sarajevo

Član broj: 25909
Poruke: 133
89.146.162.*



Profil

icon Re: Ime fajla u promenjivoj ne radi?26.05.2008. u 17:24 - pre 193 meseci
Ime filea se navodi kao const char* ... evo primjera
Citat:

ulazni file: test.txt
1 2 3 4 5


Code:

#include <iostream>
#include <fstream>
using namespace std;

int main(void){
    char file [256];
    cout<<"Unesite ime file-a: "<<endl;
    cin.getline(file, '\n');

    ifstream ulaz(file);
    int n;
    while( ulaz>>n )
        cout<<n<<endl;
    return 0;
}


...izlaz programa izgleda ovako

Citat:

./varfile
Unesite ime file-a:
test.txt
1
2
3
4
5

if (argc > 1 && strcmp(argv[1], "-advice") == 0) {
printf("Don't Panic!n");
exit(42);
}
 
Odgovor na temu

Zed Mc Jack
Programer
Bečej

Član broj: 93120
Poruke: 137
91.102.226.*

Sajt: www.subakov.com


Profil

icon Re: Ime fajla u promenjivoj ne radi?27.05.2008. u 15:47 - pre 193 meseci
Kao što rekoh varijanta koju je predložio karas radi isto kao i ova nova varijanta koju je predložio xeron ali samo za fajlove koji nemaju prazna mesta u imenu fajla.
U svakom slučaju, hvala obojici na idejama.
www.subakov.com Jedini Visual FoxPro sajt u Srbiji
 
Odgovor na temu

karas

Član broj: 5574
Poruke: 482
*.static.sbb.rs.



+1 Profil

icon Re: Ime fajla u promenjivoj ne radi?28.05.2008. u 08:15 - pre 193 meseci
Sta je problem? Ne mozes da otvoris fajl koji ima space u imenu?
Sveti Avgustin: "Dobar hrišćanin treba da se kloni matematičara i svih onih koji daju lažna proročanstva. Postoji opasnost da su matematičari već sklopili pakt sa Đavolom, da pomrače čovekov um i da ga okuju okovima pakla."
 
Odgovor na temu

Zed Mc Jack
Programer
Bečej

Član broj: 93120
Poruke: 137
79.101.64.*

Sajt: www.subakov.com


Profil

icon Re: Ime fajla u promenjivoj ne radi?28.05.2008. u 09:15 - pre 193 meseci
Da, kao što rekoh već.
www.subakov.com Jedini Visual FoxPro sajt u Srbiji
 
Odgovor na temu

karas

Član broj: 5574
Poruke: 482
*.static.sbb.rs.



+1 Profil

icon Re: Ime fajla u promenjivoj ne radi?28.05.2008. u 09:49 - pre 193 meseci
Probaj da space u imenu fajla zamenis sa \x20
Code:

fstream f("t\x20mp.txt");

ako je to problem.
Sveti Avgustin: "Dobar hrišćanin treba da se kloni matematičara i svih onih koji daju lažna proročanstva. Postoji opasnost da su matematičari već sklopili pakt sa Đavolom, da pomrače čovekov um i da ga okuju okovima pakla."
 
Odgovor na temu

Zed Mc Jack
Programer
Bečej

Član broj: 93120
Poruke: 137
79.101.64.*

Sajt: www.subakov.com


Profil

icon Re: Ime fajla u promenjivoj ne radi?28.05.2008. u 10:29 - pre 193 meseci
Ok, mislim da je problem u tome što konzolni unos izgleda ne dozvoljava unos stringa sa space karakterom, ili mu on dođe kao terminator.
Oustalom...
Code:

string fajl;
cin >> fajl;
cout << fajl;


ako unesemo Word counter.cpp kao ime fajla.
cout će dati samo Word kao izlaz, što mi govori da je ovo ili nelegalna situacija ili se ovo ne obrađuje na pravi način, to jest ja ne znam da li uopšte može da se reši?
www.subakov.com Jedini Visual FoxPro sajt u Srbiji
 
Odgovor na temu

karas

Član broj: 5574
Poruke: 482
*.static.sbb.rs.



+1 Profil

icon Re: Ime fajla u promenjivoj ne radi?28.05.2008. u 11:02 - pre 193 meseci
Operator >> tretira belinu kao separator, koristi getline() umesto njega, vidi http://www.cppreference.com/cppstring/getline.html.
Sveti Avgustin: "Dobar hrišćanin treba da se kloni matematičara i svih onih koji daju lažna proročanstva. Postoji opasnost da su matematičari već sklopili pakt sa Đavolom, da pomrače čovekov um i da ga okuju okovima pakla."
 
Odgovor na temu

Zed Mc Jack
Programer
Bečej

Član broj: 93120
Poruke: 137
79.101.64.*

Sajt: www.subakov.com


Profil

icon Re: Ime fajla u promenjivoj ne radi?28.05.2008. u 11:29 - pre 193 meseci
E, to je to, hvala.

Sada ceo program izgleda ovako:
Code:
#include <iostream>
#include <fstream>
#include <vector>
#include <string>

using namespace std;

int main()
{
    string fajl, words;
    int broj=0;
    vector <string> word;
    cout << "The word counter \n\n";
    cout << "Enter the file name: ";
    getline(cin,fajl) ;
    cout << endl << fajl << endl;
    ifstream in(fajl.c_str());
    while (in >> words){
   ++broj;
    }
    cout << "\nThere are " << broj << " words in the program.\n";
    system("PAUSE");
}


E, da , hvala i na onom linku, Fox ima odličan help gde je dovoljno obeležiti ključnu reč i stisnuti F1 i dobiješ odmah sve što ima u helpu na tu temu. Jasno mi je da je Dev-C++ free i obustavljen, ali mi svejedno nedostaje ova vrsta pomoći.
Navika je čudna stvar.
www.subakov.com Jedini Visual FoxPro sajt u Srbiji
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: Ime fajla u promenjivoj ne radi?

[ Pregleda: 2661 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.