backspace não funciona ao executar o programa c ++

1

Sempre que eu uso ./a.out para executar um programa c / c ++ no bash, não consigo retroceder ao inserir a entrada. Em vez disso, recebi uma caixa com um ponto de interrogação.

    
por Paul Stroud 19.04.2016 / 16:49

2 respostas

1

A caixa com um ponto de interrogação soa como o caractere de substituição Unicode. Isso pode ser exibido nessa situação:

  • o terminal usa a codificação UTF-8,
  • alguém digitou um caractere multibyte usando a codificação UTF-8,
  • a tecla de retrocesso (ou qualquer que seja a palavra) é recebida, mas
  • apenas parte do caractere, ou seja, o último byte é removido pelo driver de terminal e
  • o terminal, solicitado a (re) exibição tem apenas um caractere incompleto, e
  • mostra o caractere de substituição:

EmboraokerneldoLinuxtenhasuportadoumsinaliutf8porváriosanos,issonãoépadronizadoegeralmentenãoestádisponívelemoutrossistemas(OSX tem , a propósito). Também (mesmo se suportado) há a chance de que ele tenha sido desativado.

Leitura adicional:

The tty driver of any POSIX system supports a “cooked” mode, in which some primitive line editing functionality is available. In order to allow the character-erase function (which is activated when you press backspace) to work properly with UTF-8, someone needs to tell it not count continuation bytes in the range 0x80-0xBF as characters, but to delete them as part of a UTF-8 multi-byte sequence. Since the kernel is ignorant of the libc locale mechanics, another mechanism is needed to tell the tty driver about UTF-8 being used. Linux kernel versions 2.6 or newer support a bit IUTF8 in the c_iflag member variable of struct termios. If it is set, the “cooked” mode line editor will treat UTF-8 multi-byte sequences correctly. This mode can be set from the command shell with “stty iutf8”. Xterm and friends should set this bit automatically when called in a UTF-8 locale.

por 21.04.2016 / 01:05
-1

Esse é o comportamento esperado.

A tecla Backspace não se destina a excluir, mas a retroceder.

Se você quiser excluir caracteres, use a tecla DEL .

    
por 19.04.2016 / 20:07

Tags