std::string erase usuwa ostatni znak tylko raz
Ostatnio zmodyfikowano 2013-06-26 14:36
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: 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 ""; }
|
|
pekfos |
» 2013-06-26 14:31:54 Znaku nr 8 (backspace) nie zobaczysz w konsoli, a nie piszesz, kiedy coś dodajesz do stringa. |
|
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 :) |
|
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! |
|
1 « 2 » |