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

std::string erase usuwa ostatni znak tylko raz

Ostatnio zmodyfikowano 2013-06-26 14:36
Autor Wiadomość
RazzorFlame
Temat założony przez niniejszego użytkownika
» 2013-06-26 14:28:37
Zrobiłem to co kazałeś DejaVu i patrz: Log z konsoli:

iuhuih
iuhui
Usunieto 1 znak
iuhui
iuhui
Usunieto 1 znak
iuhui
iuhui
Usunieto 1 znak
iuhui
iuhui
Usunieto 1 znak
iuhui
iuhui
Usunieto 1 znak
iuhui
iuhui
Usunieto 1 znak
Nacisnąłem 6x backspace. Kod funkcji:
C/C++
std::string GUI_EditBox::checkTextEntered( GameWindow * win )
{
    if( m_Active )
    {
        if( win->m_Event.Type == sf::Event::TextEntered )
        {
            m_Text += win->m_Event.Text.Unicode;
        }
        else if( win->m_Event.Type == sf::Event::KeyPressed && win->m_Event.Key.Code == sf::Key::Return )
        {
            std::string txtCopy = m_Text;
            m_Text = "";
            return txtCopy;
        }
        else if( win->m_Event.Type == sf::Event::KeyPressed && win->m_Event.Key.Code == sf::Key::Back )
        {
            if( m_Text.size() > 0 )
            {
                cout << m_Text << endl;
                m_Text.erase( m_Text.length() - 1, 1 );
                cout << m_Text << endl;
                cout << "Usunieto 1 znak" << endl;
            }
        }
    }
   
    return "";
}
P-86212
pekfos
» 2013-06-26 14:31:54
Znaku nr 8 (backspace) nie zobaczysz w konsoli, a nie piszesz, kiedy coś dodajesz do stringa.
P-86214
DejaVu
» 2013-06-26 14:33:06
To wyświetl w konsoli jeszcze długość tekstu przed usunięciem znaku i po jego usunięciu :)
P-86215
RazzorFlame
Temat założony przez niniejszego użytkownika
» 2013-06-26 14:36:35
Dobra zrobiłem tak jak chcieliście i okazało się że event TextEntered zachodzi nawet jak wpisujemy m.in. Enter i Backspace. Dodałem do ifa odpowiedni warunek (win->m_Event.Text.Unicode != 8) i działa. Dalej z innymi klawiszami sobie poradze, dzieki za pomoc i zamykam!
P-86216
1 « 2 »
Poprzednia strona Strona 2 z 2