Страницы

Поиск по вопросам

пятница, 12 апреля 2019 г.

Возможно ли в переменную записать что угодно? C++

Допустим, пользователь должен ввести 2 аргумента, которые передадутся шаблону-функции, которая принимает любой тип данных, там их меняет местами и выводит на экран... Изи. Но... Как сделать так, чтобы пользователь через консоль мог вводить что угодно. Скажем 1, 2. Или 5.2, 7.3 Или a, b. Ведь то что он ввел, записывается в переменную. А переменная имеет свой тип. И если она int, то пользователь не сможет ввести символ.


Ответ

Входные данные вы получаете в виде строки. Тут без вариантов. Т.к. динамической типизации в C++ нет и вы не знаете заранее (по условию нужно чтобы мог вводить что угодно), что вам ввёл пользователь - этапа определения типов введённых данных не избежать. Вам для каждого аргумента надо определить, а не int ли это, или double. И в зависимости от результатов такой проверки уже решаете какую операцию применить к аргументам.
Если они приводимы к числу. т.е. оба int или double, или один int а второй double то вы их складываете. Если хотя бы один из них не приводим к числу-работаете как со строками.
Детали реализации это уже вкусовщина. Можно определять сразу после получения аргументов и, в зависимости от результатов проверки вызывать нужную функцию которая проведёт операцию и вернёт результат (можно и без функци обойтись) Можно после ввода вызывать функцию принимающую 2-а string'а и осуществляющую проверку и операции в теле функции. А можете создать класс наследуемый от string'a (сответственно чтоб его экземпляр можно было инициализировать строкой) и перегрузить в нём операцию "+". Тогда проверки и нужные операции будут выполняться в теле перегруженного метода.

Комментариев нет:

Отправить комментарий