Top.Mail.Ru
Ответы
Аватар пользователя
Изменено
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+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'; 
}