Если вы на самом деле пытаетесь программировать на идиоматическом C ++, игнорируйте (намеренно?) Плохой совет, который вам дают.Особенно ответы, указывающие на функции C.C ++ может быть в значительной степени обратно совместим с C, но его душа - это совершенно другой язык.
Ваш вопрос настолько фундаментален, что может стать причиной ужасного домашнего задания.Особенно, если вы настолько дрейфуете, что не знаете, как избежать conio.h и других трагедий.Поэтому я просто напишу решение здесь:
#include <iostream>
#include <string>
// Your function is presumably something like this
// although maybe you are just using integers instead of floats
float myAbs(const float x) {
if (x >= 0) {
return x;
} else {
return -x;
}
}
int main(int argc, char* argv[]) {
// give a greeting message followed by a newline
std::cout << "Enter values to get |value|, or type 'quit'" << std::endl;
// loop forever until the code hits a BREAK
while (true) {
// attempt to get the float value from the standard input
float value;
std::cin >> value;
// check to see if the input stream read the input as a number
if (std::cin.good()) {
// All is well, output it
std::cout << "Absolute value is " << myAbs(value) << std::endl;
} else {
// the input couldn't successfully be turned into a number, so the
// characters that were in the buffer that couldn't convert are
// still sitting there unprocessed. We can read them as a string
// and look for the "quit"
// clear the error status of the standard input so we can read
std::cin.clear();
std::string str;
std::cin >> str;
// Break out of the loop if we see the string 'quit'
if (str == "quit") {
break;
}
// some other non-number string. give error followed by newline
std::cout << "Invalid input (type 'quit' to exit)" << std::endl;
}
}
return 0;
}
Это позволит вам использовать естественные способности классов iostream.Они могут заметить, что не могут автоматически преобразовать то, что пользователь ввел в нужный вам формат, и дать вам возможность просто поднять руки с ошибкой - или попробовать интерпретировать необработанный ввод другим способом.