01/10/2018, 16:36

Làm sao đổi các kí tự vừa nhập vào thành * như khi nhập mật khẩu?

Mình đang viết cái chương trình nhập vào tài khoản và mật khẩu rồi kiểm tra đúng hay sai để đăng nhập, nhưng đến khi chạy thì thấy không hài lòng cho lắm vì mật khẩu vẫn hiện trơ trơ ra ngoài màn hình . Vậy nên mình muốn hỏi có hàm hoặc lệnh nào chuyển các kí tự vừa nhập vào trên màn hình thành kí tự * (giống như ghi mk vào trên các trang web) hoặc sau khi nhấn Enter thì toàn bộ phần vừa nhập chuyển thành ‘***…’. Mình xin cảm ơn trước

Kuroemon viết 18:49 ngày 01/10/2018

đây bạn

string password = "";
char c;
do {
        c = getch(); // dùng hàm getch() để nhận kí tự vào biến c đã khai báo trước
        cout << "*"; // in ra kí tự như mật khẩu
        password += c; // cộng biến c vào password
} while (c!=13); // kiểm tra xem biến c có bằng enter không

đống này mình lấy từ một cái chương trình cũ giống bạn
bạn nhớ đọc mấy dòng mình comment nha.

Phúc viết 18:49 ngày 01/10/2018

Cảm ơn nha:relaxed: hàm của bạn dễ hiểu dễ nhớ :))

Phúc viết 18:37 ngày 01/10/2018

Mà mình làm hàm y chang của bạn mà sao lại có dấu cách giữa các kí tự trong biến password? cái này là do hàm cộng nó như vậy và mình phải thủ công xóa dấu cách hay là do mình làm sai gì rồi?

#include <iostream>
#include <string>
#include <windows.h>
#include <conio.h>
using namespace std;

const string tk = "asdfgh";
const string mk = "qwerty";

int main()
{
	string tkc, mkc=""	;
	do
	{
		fflush(stdin);
		cout << "Nhap tai khoan va mat khau de dang nhap.\n";
		Sleep(1000);
		cout << "-Tai khoan: "; getline(cin, tkc);
		fflush(stdin);
		cout << "-Mat khau: "; 
		char i;
		do
		{
			fflush(stdin);
			i = _getch();
			cout << "*";
			mkc += i;
		} while (i != 13);
		if (tkc != tk || mkc != mk) cout << "\nTai khoan hoac mat khau khong dung, vui long nhap lai\n";
	} while (tkc != tk || mkc != mk);
	cout << "\nBan da dang nhap thanh cong!\n";
	system("pause");
}

Ở chỗ mkc điền “qwerty” vào thì lại ra "q w e r t y "

明玉 viết 18:48 ngày 01/10/2018

Thấy có sao đâu.

rogp10 viết 18:37 ngày 01/10/2018

Dạng này thì phải can thiệp từ OS (tức là ko dùng hàm chuẩn, vì nó toàn dùng buffer)

fflush(stdin) bỏ lâu oy`, dùng chung ko đảm bảo đâu.

Phúc viết 18:50 ngày 01/10/2018

Kì rứa @@ để m xem lại.

Bài liên quan
0