


Программирование
+3Нужно решить проверку типа данных в C++
Здравствуйте. Я читаю книгу по C++, и когда я выполняю задания, я всегда добавляю что-то своë. Сейчас я решил сделать проверку на "дурака", которая при вводе дробного, а не целого числа просто закрывала консоль.
Я уже задавал такой вопрос, из него я узнал, что вместо этого:
cin >> x
if (x == double) {
...
}
cin >> x
if (x == double) {
...
}
cin >> x
if (x == double) {
...
}
cin >> x
if (x == double) {
...
}
надо использовать string вместо cin, а также что-то нужно делать с функцией stod.
Только по-скольку я совсем новичок, я не знаю как это реализовать. Помогите пожалуйста🙏
По дате
По рейтингу
123456789101112131415161718192021
#include <iostream>
using namespace std;
int input()
{
int inte;
do
{
cin >> inte;
if (!cin.fail() && cin.rdbuf()->in_avail()==1) return inte;
cout << "Not a destimate! Try again.\n";
cin.clear();
cin.ignore(cin.rdbuf()->in_avail(), '\n');
} while (true);
}
int main()
{
int a = input();
cout << "a = " << a;
}
12345678910111213141516171819202122232425262728
#include <iostream>
#include <regex>
#include <string>
using namespace std;
bool is_integer(const string& line) {
return regex_match(line, regex("[(-|+)|][0-9]+"));
}
int input(const char* msg) {
int value;
while (true) {
cout << msg;
string line;
cin >> line;
try {
if (!is_integer(line)) throw exception("");
value = stoi(line);
break;
} catch (...) {
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
}
return value;
}
int main() {
const auto num = input("Integer: ");
cout << "Result: " << num << '\n';
}