C ++ Password программа, строка не удаляет последний символ при возврате

Поэтому я создаю простую программу для паролей, которая запрашивает ввод, но маскирует его звездочками (*). У меня работает код, но когда я возвращаюсь назад, возвращаемая строка выглядит так, как будто я никогда не возвращался.

Что бы я набрал:

12345

Я дважды ударил бы по backspace, и строка выглядела бы так:

123

Но когда я нажимаю Enter, он возвращает это:

1234

Вот код, который у меня есть.

#include <iostream>
#include <string>
#include <conio.h>               //Regular includes.
using namespace std;

string Encrypted_Text(int a) {   //Code for the password masker
string Pwd = " ";            //Creates password variable.
char Temp;                   //Temporary variable that stores current keystroke.
int Length = 0;              //Controls how long that password is.
for (;;) {                   //Loops until the password is above the min. amount.
Temp = _getch();         //Gets keystroke.

while (Temp != 13) {     //Loops until enter is hit.
Length++;            //Increases length of password.
Pwd.push_back(Temp); //Adds newly typed key on to the string.
cout << "*";
Temp = _getch();     // VV This is were the error is VV
if (Temp == 8) {     // detects when you hit the backspace key.
Pwd.pop_back;    //removes the last character on string.
cout << "\b ";   //Deletes the last character on console.
Length--;        //decreases the length of the string.
}
}
if (Length < a) {        //Tests to see if the password is long enough.
cout << "\nInput Is To Short.\n";
Pwd = "";
Temp = 0;
Length = 0;
}
else {
break;
}
}
return Pwd; //Returns password.
}

И в моей основной функции у меня есть это:

string Test = Encrypted_Text(5);
cout << "you entered : " << Test;

0

Решение

В вашем коде вы push_back какой бы персонаж вы ни получили. Только после этого вы удаляете персонажа, если это забой. Вот почему это не работает.

Вы должны сначала проверить наличие специальных символов, и только если вы не добавили этот символ.

Также нет необходимости иметь Length переменная с std::string знает его длину, и вы можете получить его оттуда.

1

Другие решения

Других решений пока нет …