006
06.04.2007, 22:57 Uhr
0xdeadbeef
Gott (Operator)
|
exit ist in C++ äußerst gefährlich, weil dann _garnichts_ mehr aufgeräumt wird. Mach ein break draus.
Oder, machs gleich sinnvoll und schreib
C++: |
#include <algorithm> #include <exception> #include <iostream> #include <iterator> #include <sstream> #include <string> #include <vector>
#ifdef _WIN32 #include <cstdlib> #endif
struct exit_tag : public std::exception { virtual char const *what() const throw() { return "Uncaught exit tag"; } };
unsigned read_number(std::string const &prompt) throw(exit_tag) { std::istringstream isstr; unsigned x; std::string line;
do { std::cout << prompt << std::flush; std::getline(std::cin, line);
if(line == "exit") throw exit_tag();
isstr.clear(); isstr.str(line); isstr >> x; } while(!isstr);
return x; }
int main() { std::vector<unsigned> numbers;
try { while(true) { numbers.push_back(read_number("Zahl eingeben, oder \"exit\" zum Beenden: ")); } } catch(exit_tag &e) { }
std::copy(numbers.begin(), numbers.end(), std::ostream_iterator<unsigned>(std::cout, "")); std::cout << std::endl;
#ifdef _WIN32 std::system("pause"); #endif }
|
-- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra Dieser Post wurde am 06.04.2007 um 23:02 Uhr von 0xdeadbeef editiert. |