[C++]zamienia const char* na char*
Ostatnio zmodyfikowano 2018-02-04 13:28
znyk Temat założony przez niniejszego użytkownika |
[C++]zamienia const char* na char* » 2018-02-03 17:13:29 Przeniosłem program napisany w borland c++ na dev c++ i w czasie kompilacji mam błąd: [Warning] deprecated conversion from string constant to 'char*' [-Wwrite-strings] dotyczy on linijki: outtextxy(185,30,"SCHEMAT SIECI NEURONOWEJ"); W czym tkwi problem ? |
|
jankowalski25 |
» 2018-02-03 17:38:22 Próbujesz zamienić const char * na char * , co może być błędem. Jeśli funkcja outtextxy() nie modyfikuje podawanego napisu, to można użyć const_cast . A jak chcesz zrobić to bezpiecznie, to przypisz ten łańcuch znaków na przykład do char[] . Dopisano:Zmień nazwę tematu. Treść ostrzeżenia jest tutaj ważniejsza niż to, że zmieniasz IDE. |
|
znyk Temat założony przez niniejszego użytkownika |
» 2018-02-04 11:29:42 Zrobiłem przykładowy programik z const_cast: #include <iostream> #include <graphics.h> #include <string.h> using namespace std;
int main() { string text="marcin";
int gd,gm; gd=DETECT; initgraph(&gd,&gm,NULL); outtext(const_cast<char*>(text.c_str())); delay(5000); closegraph(); }
i działa tylko w programie mam dużo razy użyte outtext, jestem dopiero początkujący w kodowaniu i nie mam pomysłu jak to uprościć, czy za każdym razem mam przypisywać tekst do zmiennej łańcuchowej ? Już sobie poradziłem zadeklarowałem zmienną globalną i działa. |
|
jankowalski25 |
» 2018-02-04 13:28:41 Prosty program pokazujący problem: #include <iostream>
void funkcja( char * napis ) { std::cout << napis; }
int main() { funkcja( "Hello world" ); } Najprostsze bezpieczne rozwiązanie: char hello[] = "Hello world"; funkcja( hello ); Coś bardziej uniwersalnego, z dynamiczną alokacją pamięci: #include <cstring>
void moja_funkcja( const char * napis ) { std::size_t rozmiar = std::strlen( napis ); char * dane = new char[ rozmiar + 1 ]; std::strcpy( dane, napis ); funkcja( dane ); delete[] dane; }
int main() { moja_funkcja( "Hello world" ); } zadeklarowałem zmienną globalną i działa |
Zwykle powinno się unikać zmiennych globalnych, jeśli się da. |
|
« 1 » |