31template <
class NUMBER>
33ask_num(
const std::string& str, NUMBER minimum_value, NUMBER maximum_value, NUMBER default_value)
39 std::cerr <<
"\n" << str <<
"[" << minimum_value <<
"," << maximum_value <<
" D:" << default_value <<
"]: ";
40 std::getline(std::cin, input);
41 std::istringstream ss(input.c_str());
43 NUMBER value = default_value;
45 if ((value >= minimum_value) && (maximum_value >= value))
47 std::cerr <<
"\nOut of bounds. Try again.";
51template <
class IFSTREAM>
61 s.open(name.c_str(), std::ios::in | std::ios::binary | std::ios::nocreate);
63 s.open(name.c_str(), std::ios::in | std::ios::binary);
66 if (s.fail() || s.bad())
68 error(
"Error opening file %s\n", name.c_str());
73template <
class OFSTREAM>
77 s.open(name.c_str(), std::ios::out | std::ios::binary);
79 if (s.fail() || s.bad())
81 error(
"Error opening file %s\n", name.c_str());
86template <
class FSTREAM>
97 for (
char* a = str; *a; a++)
99 if ((*a >=
'a') && (*a <=
'z'))
Declaration of stir::error()
void close_file(FILE *&fptr)
closes a FILE without error checking.
Definition utilities.cxx:101
void error(const char *const s,...)
Print error with format string a la printf and throw exception.
Definition error.cxx:42
FILE *& open_write_binary(FILE *&fptr, const string &name)
opens a FILE for writing binary data. Calls error() when it does not succeed.
Definition utilities.cxx:90
FILE *& open_read_binary(FILE *&fptr, const string &name)
opens a FILE for reading binary data. Calls error() when it does not succeed.
Definition utilities.cxx:79
char * strupr(char *const str)
make C-string uppercase
Definition utilities.inl:95
NUMBER ask_num(const std::string &prompt, NUMBER minimum_value, NUMBER maximum_value, NUMBER default_value)
A function to ask a number from the user.
Definition utilities.inl:33