C++ Eingabe in der Konsole zensieren

"_getch()" gibt zwar ein "int" zurück, welches aber einem ASCII-Zeichen entspricht, also einem "char", du darfst also den Rückgabewert nicht einem Array bzw. einem Pointer zuweisen, sondern einem "char" bzw. einem "int".
Ich habe den Code absichtlich als einzelnes Zeichen geschrieben, denn wenn man das Wort eingibt, dann kann man anhand der Sterne, die die zensierung darstellen, ja erkennen welches Wort man eingegeben hat.
Das wäre doch als einzelnes Zeichen viel sicherer, außerdem nicht so viel Tipparbeit, aber es ist natürlich auch möglich ein Wort einzulesen.

Hier das ganze mit einem Wort, so wie es asdfman auch schon geschrieben hat:
Code:
#include <iostream>
#include <conio.h>
using namespace std;

int main()
{
	char strChoice[30];
	char cInput;
	int iCounter = 0;

	cout << "Choose: ";
	cInput = _getch();

	while( (int)cInput != 13 )    // ASCII 13 = ENTER
	{
		cout << "*";
		strChoice[iCounter] = cInput;
		cInput = _getch();

		iCounter++;
	}

	strChoice[iCounter] = '\0';    // Overwrite last character ( ENTER )

	if( !strcmp(strChoice, "Rock") || !strcmp(strChoice, "rock") )
	{
		cout << endl << "You have chosen \'Rock\'" << endl;
	}
	else if( !strcmp(strChoice, "Paper") || !strcmp(strChoice, "paper") )
	{
		cout << endl << "You have chosen \'Paper\'" << endl;
	}
	else if( !strcmp(strChoice, "Scissors") || !strcmp(strChoice, "scissors") )
	{
		cout << endl << "You have chosen \'Scissors\'" << endl;
	}
	else
	{
		cout << endl << "ERROR - Incorrect input!" << endl;
	}

	cout << endl << "Press any key to exit . . . ";
	_getch();
	return 0;
}
Das ganze wäre mit einem String viel schöner, außerdem sollte man sowieso in C++ mit Strings statt mit Arrays arbeiten, aber du brauchst wohl ein Array, oder?

Gruß
BlackMark
 
Zuletzt bearbeitet:
@asdfman
wenn du portable sprache willst dann programmier doch Java. Es gibt aber viele nachteile wieso man Java nicht als standard für alles nimmt. Java ist eine VM. Javacode ist offen nach dem es kompiliert worden ist... habe ich noch irgendwas vergessen. Solange die VM den echtzeitcode an der Geschw. nicht schlagen wird Java halt für kleinere anwendungen eingesetzt wo die Anforderung halt nicht so groß ist. Naja Quake 2 Wurde ja auf Java schon portiert und kann im Web gespielt werden (mit bis zu 60 fps)... aber das liegt ehe daran dass die PCs einfach leistungsfähiger sind um die verzögerung der VM nachzuholen.
 
Naja ich denke es ist auch ein Nachteil, dass eine Firma dahinter steht.
Zudem ist die JVM in C und C++ programmiert, womit sich der Kreis wieder schließt :-) .

Gruß,

badday
 
Zurück
Oben