• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zamiana tekstu w locie

VPS Starter Arubacloud
+1 głos
397 wizyt
pytanie zadane 10 kwietnia 2015 w C i C++ przez M4tthew Gaduła (4,480 p.)
Hej potrzebuje napisać coś takiego co umożliwi mi zamiane tekstu na znaki dokładniej * tak jak jest hasło, wpisujecie i go nie widać ma ktoś jakiś pomysł jak to zrobić lub gotowy kod?

2 odpowiedzi

0 głosów
odpowiedź 10 kwietnia 2015 przez Przemek Gaduła (3,600 p.)
wybrane 10 kwietnia 2015 przez M4tthew
 
Najlepsza
Robisz to w aplikacji konsoli czy aplikacji okienkowej?
komentarz 10 kwietnia 2015 przez M4tthew Gaduła (4,480 p.)
robie to w konsoli
komentarz 10 kwietnia 2015 przez Przemek Gaduła (3,600 p.)
#include <iostream>
#include <conio.h>
#include <string>

int main()
{
    unsigned char znak;
    std::cout << "klawisz [ESC] wychodzi z programu." << std::endl;
    std::string tekst = "";

    do
    {

        znak = getch();
        if(znak == 13) //Enter
        {
            std::cout << "\n" << tekst << "\n";
            tekst = "";
        }
        else
        {
            tekst += znak;
            std::cout << "*";
        }

    } while( znak != 27 ); //ESC

    return( 0 );
}

 

komentarz 10 kwietnia 2015 przez M4tthew Gaduła (4,480 p.)
właśnie o to mi chodziło bardzo dziękuje ! :)
+2 głosów
odpowiedź 10 kwietnia 2015 przez Grabarz Bywalec (2,880 p.)
edycja 10 kwietnia 2015 przez Grabarz

Hej,

Możesz użyć biblioteki pdcurses dla windows lub ncurses dla gnu/linux. Biblioteka *curses, służy do nisko-poziomowego zarządania terminalem.

  1. Wyłącz tryb echo (funkcja noecho()) oraz buforowanie strumienia wejściowego (funkcja raw())
  2. W pętli, pobieraj znak za pomocą funkcji getch(), a po jego pobraniu wpisz znak '*' na wyjście. Z każdym kolejnym znakiem, dołączaj go do obiektu std::string za pomocą metody push_back(), a następnie porównaj go z hasłem i podejmij odpowiednie akcje (Wyjście z pętli, kontynuacja)
#include <ncurses.h>
#include <iostream>

int main()
{ initscr();
  noecho(); /* Wyłączenie wypisywania strumienia wejściowego na wyjście */
  cbreak(); /* Podobnie co raw(), tylko że pozwala na użycie skrótów klawiszowych (Ctrl+C) */
  std::string password;
  char symbol;
  while (true)
  { symbol = getch();
    printw("*");
    password.push_back(symbol);
    if (password == "zaq1@WSX")
     break; }
  std::cout << "\nZalogowano\n";
  endwin(); }

Podobne pytania

0 głosów
4 odpowiedzi 887 wizyt
pytanie zadane 6 lutego 2016 w C i C++ przez Dronojad Obywatel (1,980 p.)
0 głosów
2 odpowiedzi 5,884 wizyt
pytanie zadane 22 lipca 2017 w Systemy operacyjne, programy przez Quasch Nowicjusz (160 p.)
0 głosów
2 odpowiedzi 251 wizyt
pytanie zadane 30 stycznia 2017 w C i C++ przez czujek22 Dyskutant (7,670 p.)

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...