文字列の文字の挿入と削除について質問したいと思います。 コードは次のとおりです。getch()関数を使用してBackSpaceを実装する
void Edit::input() {
int len = 0;
COORD cord;
cord.X = _x;
cord.Y = _y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), cord);
while (true) {
char ch = _getch();
if (ch == 13)
{
break;
}
else if (ch == 8)
{
if (len == 0)
{
continue;
}
pusty.pop_back();
std::cout << "\b \b";
len--;
}
else if (len == 6) {
break;
}
else {
pusty.push_back(ch);
len++;
}
std::cout << ch;
}
}
問題は何ですか?私はテキストがこのウィンドウに入力されるウィンドウのXとYの座標を持っている、全体の文字列の長さは6文字です。問題は、len
の値が最後の要素にあるときにバックスペースを使いたいときです。その後、バックスペースは7番目のインデックスに空白を作成します。下の図はその問題を示しています。この問題を避けるには?すべてのフィードバックをありがとう。余分なスペースがあなたに文字を返すだけでなく、コンソールにエコー表示getch
を、使用によるものである
あなたのコード、結果、および予想される結果を画像としてではなくテキストとして追加してください。 – pirho
'\ b'は普通はBEL文字ではありません - 端末がサポートしていれば端末ベルを呼び出しますか? –
@NeilButterworth私はそれが通常 '\ a'だと信じています。 /bash-prompt-escape-sequences.html)と[windows](https://msdn.microsoft.com/en-us/library/h21280bw.aspx)を参照してください。 – hnefatl