DejaVu |
» 2013-01-08 21:18:55 Czy kod z dowolnego tutoriala, prezentujący działanie wspomnianej funkcji również Ci nie działa? |
|
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". |
|
DejaVu |
» 2013-01-08 22:01:57 nie ma str_c :P char * napis = "123123123"; costam( costam, napis );
To też źle działa? |
|
Mrovqa |
» 2013-01-08 22:05:03 Wiesz co zwraca std::string::c_str()? Kopię stringa, a nie oryginał.
| Nieprawda :)
| http://ideone.com/NiNdNyHmm... 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 :) |
|
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. |
|
DejaVu |
» 2013-01-08 22:38:02 to spróbuj dalej: const char * napis = tekst.c_str();
Jeżeli nie zadziała to spróbuj: static std::string tekst = "bla"; costam( costam, tekst.c_str() ); |
|
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 ) . |
|
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). |
|
1 2 « 3 » 4 5 |