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ść
ison
» 2013-01-08 19:12:01
C/C++
#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.
P-73368
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.
P-73369
DejaVu
» 2013-01-08 19:16:11
Wiesz co zwraca std::string::c_str()? Kopię stringa, a nie oryginał.
Nieprawda :)
P-73370
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ą.

Widzisz 2 napisy "test"?
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ć.
P-73403
DejaVu
» 2013-01-08 20:47:11
Na dzień dobry wpisz tekst 'na sztywno' i sprawdź czy zadziała.
P-73404
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.
P-73405
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.
P-73406
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"
P-73407
1 « 2 » 3 4 5
Poprzednia strona Strona 2 z 5 Następna strona