Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 15.09.2018
Сообщений: 133

Проверка на ввод исключительных ситуаций

25.11.2018, 13:27. Показов 1285. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
как изменить оператор if, чтобы если мы ввели числа вместо букв, то выбрасывало бы исключение ?
C++
1
2
3
4
5
6
7
8
9
10
istream& operator>>(istream& in, Resistor& cap)
{
    system("cls");
    cout << "\n\n\n\t\t\tВведите маркировку детали\n\t\t";
    string s;
    if(!(in>>s))
    { 
        throw exception("Неверный формат данных");
    }
    cap.setMarking(s);
C++
1
2
3
4
5
6
7
8
try
{
......
}
catch(string s)
{
cout<< s.what()<<endl;
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.11.2018, 13:27
Ответы с готовыми решениями:

Проверка на ввод исключительных ситуаций
это проверка на ввод слова, т.е если мы введём цифры оно даст исключение, а как сделать выброс исключения при вводе &quot;.&quot;(точки)...

Проверка на ввод исключительных ситуаций
как исправить проверки на ввод английской и большой буквы так, чтобы они работали вместе, а пока одна проверка противоречит другой и...

Обработка исключительных ситуаций.
Пожалуйста,помогите решить..В субботу экзамен,а я физически не успеваю написать 6 программок..( Написать функцию вычисления...

8
98 / 64 / 36
Регистрация: 14.10.2018
Сообщений: 152
25.11.2018, 14:06
Лучший ответ Сообщение было отмечено danila-2000 как решение

Решение

C++
1
2
if(atoi(s.c_str())) 
        throw "Error,is Number";
Пример:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <string>
#include <cstdlib>
 
int main() {
    std::string s;
    std::cin>>s;
    try {
        if (atoi(s.c_str()))
            throw "Error,is Number";
    }    catch (const char *err) {
        std::cout << err << std::endl;
    }
    return 0;
}

P.S. Если после букв пойдут цифры не выбросит
1
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
25.11.2018, 14:07
Проверяй все символы.
1
0 / 0 / 0
Регистрация: 15.09.2018
Сообщений: 133
25.11.2018, 15:05  [ТС]
if(atoi(s.c_str()))
можно ли использовать с_str в С++ ? это же в стиле языка С
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
25.11.2018, 15:12
stoi() есть для string.
0
0 / 0 / 0
Регистрация: 15.09.2018
Сообщений: 133
25.11.2018, 15:29  [ТС]
if(stoi( ???)// а что писать в скобочках ?
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
25.11.2018, 15:59
s, очевидно.
0
98 / 64 / 36
Регистрация: 14.10.2018
Сообщений: 152
25.11.2018, 16:48
Насчет stoi, она в случае неудачи преобразования кидает исключение, а atoi возвращает 0. Т.е. писать if(stoi) не прокатит, по мне лучше оставить с atoi. Работать сможет и так
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <string>
 
int main() {
    std::string s;
    std::cin>>s;
    try {
        std::stoi(s);
        throw "Error, is number";
    }
    catch(const char *er) {
        std::cout<<er;
    }
    catch (...) {
        std::cout<<"Все нормально";
    }
    return 0;
}
, но перехватывать исключения, если все нормально не хорошо. Так что я думаю atoi тут как раз подходит как нельзя лучше. Наверное, все-таки лучше просто проверить все символы на isdigit(), тогда и буквы,а потом цифры отсеются
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
26.11.2018, 08:31
Цитата Сообщение от JAlHund Посмотреть сообщение
а atoi возвращает 0
А если там и был ноль, то как отличить? Плюс сказано, что если цифр больше, чем вмещает тип, то будет неопределённое поведение.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.11.2018, 08:31
Помогаю со студенческими работами здесь

Обработки исключительных ситуаций
Объясните, что от меня хотят, а то уже мозг кипит ... 7. Не абстрактный класс В является производным от абстрактного класса А. Определить...

Обработка исключительных ситуаций
Мне нужно было создать шаблонный класс и написать обработку исключающих ситуаций. Вот, что я сделал #pragma once #include...

Обработка исключительных ситуаций
Правильно ли тут я обрабатываю исключения? #pragma once #include &lt;iostream&gt; #include &quot;stdio.h&quot; #include &quot;stdlib.h&quot; ...

Обработка исключительных ситуаций
Доброго времени суток уважаемы программисты и начинающие программисты :) Скажите, почему появляется ошибка на 6й строке? Задача стоит...

Обработка исключительных ситуаций
Здравствуйте, друзья. Подскажите, пожалуйста, как можно при помощи try-throw-catch &quot;защититься&quot; от ввода пользователем &quot;не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru