016
13.02.2007, 14:06 Uhr
J-jayz-Z
Perl Crack ala Carte (Operator)
|
Ok, folgendes. Es gibt da einen "Workaround", damit sich die Konsole nicht schließt. Man liest einfach am Ende des Programmes noch einmal eine Eingabe vom Eingabestream std::cin (STDIN). Damit ist das Programm erst beendet, wenn man am Ende nochmal Enter gedrückt hat. Dies geht aber nur, wenn der Stream leer ist, da das Programm dann nicht auf die eingabe wartet - da es ja bereits etwas hat. Deswegen muss man den Puffer leeren und dann std::cin.get(); vor das return schreiben. Das ist eigentlich alles. Keine große Hexerei und auch nicht wirklich kompliziert. Nur das leeren des eingabestreams ist halt etwas kryptisch ...
C++: |
#include <iostream>
int main(int argc, char* argv[]) { float number = 0.0f; std::cout << "Zahl eingeben: " << std::flush; std::cin >> number; std::cout << std::endl << "Ergebnis: " << (number / 25000.0f) << std::endl; std::cin.clear(); std::cin.ignore(cin.rdbuf()->in_avail()); std::cin.get(); return EXIT_SUCCESS; }
|
Das sollte Einwandfrei funktionieren - ebenso wie die snippets von Beefy. Ich persönlich vermeide system halt so gut es geht ... Deshalb mag ich system("pause")nicht. Und getche() aus conio.h ist halt nicht ansi. std::cin.get() hongegen schon -- perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="66756e2d736f66742e6465"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"' |