0

プログラミングでバックスペースをエミュレートしたいので、以下のように実装します。

// del.cpp
#include <iostream>
using namespace std;

int main()
{
    cout << "123456";
    cout << "\b\b\b" /* backspace key */<< '\x7f' /* DEL key */ << '\x7f' << '\x7f';
    cout << endl;
    return 0;
}

しかし、私はこのような結果を得ます ここに画像の説明を入力

末尾を空白に置き換えることなく、以下のような結果を得るにはどうすればよいですか

123

つまり、バックスペースされたカーソルの後の文字を置き換えるのではなく、削除するにはどうすればよいですか。

4

4 に答える 4

3

「行末まで消去」エスケープ シーケンスを使用しCSI Kます。

cout << "123456";
cout << "\b\b\b\033[K";
cout << endl;

エスケープ シーケンスの一覧については、ANSI Escape Code (Wikipedia)を参照してください。もちろん、それらすべてがすべての端末で動作するわけではありませんが、最近ではソフトウェア端末を使用するので、心配する必要はありません。

于 2012-06-30T06:42:50.310 に答える
0

「\b」の後の 0x7f は必要ありません。出てくるキャラばかりです。

于 2012-06-30T06:20:55.473 に答える
0

DEL 文字の実装が端末によって異なるため、すべてのシステムで DEL 文字を使用する一般的な方法はありません。すべての端末で動作させたい場合は、空白で上書きする必要があります。

于 2012-06-30T06:37:25.523 に答える
0

このタスクを実行するには、オペレーティング システムの API にアクセスする必要があります。

于 2012-06-30T06:39:24.037 に答える