c_str() nic nie zwraca
Ostatnio zmodyfikowano 2013-01-11 17:45
ison |
» 2013-01-08 19:12:01 #include <iostream> #include <string>
int main() { std::string test = "test"; std::cout << test << std::endl; std::cout << test.c_str() << std::endl; }
Widzisz 2 napisy "test"? Jeśli tak to masz błąd w innym miejscu. |
|
Mrovqa |
» 2013-01-08 19:13:36 Jeżeli coś nie działa, to patrz zawsze do dokumentacji. Wiesz co zwraca std::string::c_str()? Kopię stringa, a nie oryginał. Jeżeli chcesz przez to zmodyfikować dane, to użyj std::string::data() - jednakże w przypadku obu funkcji nie jest zalecane modyfikowanie zawartości. W dodatku adres na string zwracany przez drugą funkcję nie zawiera NULLa na końcu. |
|
DejaVu |
» 2013-01-08 19:16:11 Wiesz co zwraca std::string::c_str()? Kopię stringa, a nie oryginał.
|
Nieprawda :) |
|
czosnek17 Temat założony przez niniejszego użytkownika |
» 2013-01-08 20:39:28 Wejdź w źródła wspomnianej funkcji i sprawdź czy tekst jest kopiowany czy też używany jest wskaźnik na tekst. |
Jako argument jest const gchar *text, zmiennej const char nie mogę przekazać, bo są błędy podczas kompilacji. W dokumentacji jest Sets the text in the widget to the given value |
z tego wynika, że chyba tekst. Nic do Ciebie nie mam i nie chcę Cię obrazić, ale jeśli nie chcesz się w życiu ośmieszyć to nie używaj słów, których znaczenia nie znasz. |
Znam :) Ale to był "cytat" ze świata według kiepskich, nie wiem czy oglądałeś, ale ja jestem wielkim fanem :P Jak ktoś nie zna to rzeczywiście mógł zrobić facepalma. Zapoznaj się z tym: http://www.gtk.org/api/2.6/gtk/GtkEntry.html#gtk-entry-set-text
|
Chodzi tylko o gtk_entry_set_text ()? Tam jest napisane, że ta funkcja ustawia tekst w widgecie z aktualnej na podaną. Tak. Jeżeli chcesz przez to zmodyfikować dane, to użyj std::string::data()
|
Też nie działa. To ja nie wiem co mam robić. |
|
DejaVu |
» 2013-01-08 20:47:11 Na dzień dobry wpisz tekst 'na sztywno' i sprawdź czy zadziała. |
|
unimator |
» 2013-01-08 20:50:38 Cytaty ujmuje się w cudzysłowy. A jeśli masz taki problem, że funkcja usuwa Ci zawartość zmiennej to zrób jej kopie, chyba najprostsze rozwiązanie. |
|
czosnek17 Temat założony przez niniejszego użytkownika |
» 2013-01-08 20:52:47 cout << podwr << endl; Działa. To, że w tekście przed literami jest jedna spacja nic nie spieprzy? A jeśli masz taki problem, że funkcja usuwa Ci zawartość zmiennej to zrób jej kopie, chyba najprostsze rozwiązanie.
|
Nie usuwa a to i tak by nie przeszkadzało. |
|
crash |
» 2013-01-08 20:57:19 Spacja jest integralną częścią stringa, tak jak każdy inny znak.
ps. "Czosnek, no mów co na ten obiad" |
|
1 « 2 » 3 4 5 |