Jak zmienić string na char ?

0

Utknąłem w takim głupim miejscu.

 
char wiadomosc[1024];
string abc = "43432" +  "8373";

bzero( wiadomosc, sizeof( wiadomosc ) );
strcpy( wiadomosc, "testujemy" + abc.c_str() + "wpis");

i mam taki blad

error: invalid operands of types ‘const char [6]’ and ‘const char [5]’ to binary ‘operator+’

Da się to jakoś zrobić ?

1

"testujemy" + abc.c_str() + "wpis"

Tak nie przejdzie. Użyj funkcji strcat albo sprintf.

0

Dzieki za pomoc.

 
                            strcpy( wiadomosc, "zmienna: " );  //
                            strcat (wiadomosc, costam.c_str());                            
                            strcat (wiadomosc, " wyswietlona");                            

Troche dziwnie to wyglada ze tak trzeba dzielic ale dziala

0

bo robisz to w złą stronę.

string abc = "43432" +  "8373";
string def = "testujemy" + abc + "wpis";

char wiadomosc[1024];
strcpy(wiadomosc, def.c_str());
1

Po pierwsze wypadałoby zrozumieć błąd, a on jest dotyczy:

string abc = "43432" +  "8373";

C++ nie ma zdefiniowanego operator+ dla dwóch C-stringów. Potrzebny jest przynajmniej 1 std::string, więc można to rozwiązać rzutując jawnie jeden C-string na std::string

string abc = string("43432") +  "8373";
0

Zmieniłem na:

string messageTemp = "wiadomosc " + param + " koncowka";
const char * messageChar = messageTemp.c_str();

Dzięki za pomoc. Mozna skasowac temat

0

@takwamikura - o 4 nad ranem podałem Ci link do wątku na StackOverflow, w którym jest kilka dość obszernych odpowiedni na ten temat; A sądząc po ilości plusików - temat jest bardzo popularny, dlatego też bardzo łatwo było go znaleźć w Google;

Są odpowiedzi na temat std::string, są i wektory, a w drugim poście w tamtym wątku masz przykład tego, co napisałes w powyższym poście (z obszernym opisem).

2
takwamikura napisał(a):
string messageTemp = "wiadomosc " + param + " koncowka";
const char * messageChar = messageTemp.c_str();

Mam nadzieję, że zdajesz sobie sprawę z tego, że jak messageTemp zniknie (bo np. było zmienną lokalną) to messageChar będzie dyndającym wskaźnikiem, który wybuchnie Ci w twarz jak spróbujesz go użyć.

0

Zasieg zmiennych jest tylko lokalny ale jesli by nie byl to co powinienem zrobic? zadeklarowac go jako globalny ?

1

Zarezerwować pamięć w postaci tablicy i skopiować znaki do tablicy: http://4programmers.net/Forum/1164491

0

pytanie brzmi: do czego ci ta tablica wiadomosc? jak jej używasz, czyli musi mieć stały rozmiar 1024 bajtów?

0

Problemem jest dopasowanie operatora dodawania. Nie ma sensownego operatora: operator+(const char *, const char *) stąd problem.
To powinno przejść i działać poprawnie:

char wiadomosc[1024];
string abc = string("43432") +  "8373";
 
bzero( wiadomosc, sizeof( wiadomosc ) );
strcpy( wiadomosc,  ("testujemy"+ abc + "wpis").c_str());

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.