1
Vývoj / Re:Objasnění chyb v C++
« kdy: 23. 02. 2020, 23:45:01 »V C++ můžete s řetězci pracovat v zásadě dvojím způsobem - buď nízkoúrovňově, což se jedná o buffer se sekvencí bytů ukončený nulovým bytem (neuvažuji teď UTF16 kódování) - pokud tento buffer někam chcete předat, často předáváte jen adresu jeho pořátku (pointer typu char *).Díky a to je řešní, aby se vlk nažral, nebo je to správně?
Nebo můžete používat nějaký wrapper nad bufferem, který poskytuje obvyklé řetězcové funkce. Dřív si mnohé knihovny definovaly svůj warpper (QString, wxString, atd.), teď už jeto naštěstí standardizováno v std::string apod. třídách.
V kódu používáte funkci remove(char*), která očekává adresu nízkoúrovňového bufferu, ale vy jí předávat zaobalovací typ.
Musíte tedy v tomto případě předat adresu bufferu, který je zaobalen. std::string na to má metodu c_str(), takže v kódu použijete výraz remove(file.c_str()).