Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

c_str() nic nie zwraca

Ostatnio zmodyfikowano 2013-01-11 17:45
Autor Wiadomość
DejaVu
» 2013-01-08 21:18:55
Czy kod z dowolnego tutoriala, prezentujący działanie wspomnianej funkcji również Ci nie działa?
P-73408
czosnek17
Temat założony przez niniejszego użytkownika
» 2013-01-08 21:40:12
"Czosnek, no mów co na ten obiad"
Co? :P

Czy kod z dowolnego tutoriala, prezentujący działanie wspomnianej funkcji również Ci nie działa?
str_c() działa dobrze, entry też, ale w tym przykładzie tekst jest podawany tak: "tekst".
P-73409
DejaVu
» 2013-01-08 22:01:57
nie ma str_c :P
C/C++
char * napis = "123123123";
costam( costam, napis );
To też źle działa?
P-73414
Mrovqa
» 2013-01-08 22:05:03
Wiesz co zwraca std::string::c_str()? Kopię stringa, a nie oryginał.
Nieprawda :)
http://ideone.com/NiNdNy
Hmm... a byłem święcie przekonany (po tym co kiedyś przeczytałem w Symfonii C++), iż jest to osobno trzymane. No cóż, i ja się czegoś dowiedziałem :)
P-73415
czosnek17
Temat założony przez niniejszego użytkownika
» 2013-01-08 22:13:15
@DejaVu
Chodzi o wypisanie tej zmiennej w funkcji costam? Jeżeli tak, to działa.
P-73417
DejaVu
» 2013-01-08 22:38:02
to spróbuj dalej:
C/C++
const char * napis = tekst.c_str();
Jeżeli nie zadziała to spróbuj:
C/C++
static std::string tekst = "bla";
costam( costam, tekst.c_str() );
P-73418
Elaine
» 2013-01-09 09:36:35
Wiesz co zwraca std::string::c_str()? Kopię stringa, a nie oryginał.
Nieprawda :)
http://ideone.com/NiNdNy
Hmm... a byłem święcie przekonany (po tym co kiedyś przeczytałem w Symfonii C++), iż jest to osobno trzymane. No cóż, i ja się czegoś dowiedziałem :)
W C++03 ta funkcja miała prawo zwrócić kopię. Dopiero od C++11 musi zwrócić to samo, co
& operator []( 0 )
.
P-73441
DejaVu
» 2013-01-09 15:30:21
@Iname: a jak z punktu technicznego zaimplementowałbyś funkcję, aby zwracała tekst w postaci const char* tak, aby został on zwolniony po zwróceniu i przepisaniu wartości do innej zmiennej oraz tak, aby rozwiązanie nie bruździło dla aplikacji wielowątkowych?

Bo ja widzę trzy opcje:
1) zmienna statyczna - ale to bruździ w aplikacjach wielowątkowych
2) dodatkowe pole w klasie - ale to w praktyce sprawia, że trzeba zarządzać drugą zmienną, której zawartość jest identyczna do tej, która została zapisana w klasie (ale sama nie zostanie 'zwolniona')
3) klasa, z przeciążonym operatorem (), która sama zwolni zasoby, ale w tym momencie każdorazowo jest tworzona kopia tekstu przy wielokrotnym wywołaniu c_str na tym samym łańcuchu tekstowym (no i nie zwraca typu const char*, tylko klasę z operatorem rzutowania).
P-73449
1 2 « 3 » 4 5
Poprzednia strona Strona 3 z 5 Następna strona