Mi a hiba (C++ fájlkezelés)?
Az alábbi cpp kód elakad a feltételnél az utolsó(14.) sorban:
létezik a fájl, sima string literal-ból meg is eszi a fájlnevet, de a változó nem jó neki
Az lesz a baj (szerintem), hogy C++ típusú String objektumot használsz, míg sima, C típusú string literál kellene neki (ami ugye char[] tömb végén '\0' jellel).
Erre megoldás, alakítsd át ilyenné. A string obejtumnak van egy c_str() tagfüggvénye, ami pont erre kell.
Tehát a 13. sor:
img.open(filename.c_str(), std::ios::binary);
a 9. sorban ez van:
char filename[80];
^^ez egy sima C-style tömb nem?
amúgy meg el sem fogadja azt a függvényt, miért is fogadná, hiszen nincs objektum
Bocsi, ezt benéztem xD
Akkor nem tudom.
Próbálj meg esetleg így beolvasni:
int i=0;
while ((filename[i++]=getchar())!='\n');
filename[i]='\0';
Vagy írd át : string filename-ra és akkor c_str();
Sajnos nincs egyéb ötletem ...
ezt a beolvasást én azzal helyettesítettem, hogy karakterenként leellenőriztem a tömböt, és minden a helyén, a "cin >> filename" null-terminálja, úgyhogy ott a char tömb, ami TÖK AZONOS a string literallal, amit a függvényhíváshoz írok, csak éppen előbbivel nem megy, utóbbival igen :D
vicces ! :)
közben rájöttem, ha std::ifstream class-ú az img, akkor megy, ha std:fstream, akkor nem
pedig örökli az .is_open() függvényt, tehát még így se mértem
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!