Форум программистов, компьютерный форум CyberForum.ru

Как определить тип переменной? - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 150, средняя оценка - 4.62
Krist_ALL
 Аватар для Krist_ALL
9 / 9 / 0
Регистрация: 01.02.2010
Сообщений: 317
22.03.2010, 13:16     Как определить тип переменной? #1
isdigit тока нашел.
а как узнать char или int или есть типа is_array?

конечно можно все реализовать на перегрузке функции но лучшеб встроенные функции.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
22.03.2010, 14:13     Как определить тип переменной? #2
isdigit работает с char, а в остальном вопрос не очень понятен.
Monte-Cristo
 Аватар для Monte-Cristo
2805 / 1370 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
22.03.2010, 14:44     Как определить тип переменной? #3
isdigit() - это не то, что ты ищешь.

Чтобы узнать тип, обычно используется typeid()
не знаю зачем тебе это понадобилос, но советую избегать таких констуркций - они применяются крайне редко.. и с++ довольно так гибок, чтоб избежать их применение в большинстве случаев.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <typeinfo>
using namespace std;
 
class MyClass {};
 
int main()
{
    int t = 5;
    MyClass c;
    
    cout << typeid(t).name() << endl;
    cout << typeid(c).name() << endl;
    
    return 0;
}
Krist_ALL
 Аватар для Krist_ALL
9 / 9 / 0
Регистрация: 01.02.2010
Сообщений: 317
22.03.2010, 20:52  [ТС]     Как определить тип переменной? #4
например
char a[100];
cin >>a;
буквы или цифры ввел юзер и мож вообще спецсимволы..
Aye Aye
 Аватар для Aye Aye
367 / 281 / 36
Регистрация: 17.12.2009
Сообщений: 567
23.03.2010, 01:29     Как определить тип переменной? #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
bool characters=true;
int i=0;
while (a[i])
{
     if (!isalpha(a[i++])) characters=false;
}
if (characters) cout << "Digets enterd\n";
bool digits=true;
int i=0;
while (a[i])
{
     if (!isdigit(a[i++])) digits=false;
}
if (digits) cout << "Char enterd\n";
//а можно еще так
bool special=true;
int i=0;
while (a[i])
{
     if (!isalpha("~`!@#$%^&*()':;/?.>,<{[}]|\"",a[i++])) special=false;
}
if (special) cout << "Special symblols enterd\n";
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16828 / 5249 / 321
Регистрация: 30.03.2009
Сообщений: 14,133
Записей в блоге: 26
23.03.2010, 13:04     Как определить тип переменной? #6
Цитата Сообщение от Krist_ALL Посмотреть сообщение
например
char a[100];
cin >>a;
буквы или цифры ввел юзер и мож вообще спецсимволы..
У тебя переменная a всегда имеет тип "массив char'ов". Независимо от того, что ввёл пользователь (ибо это уже содержимое массива, но никак не его тип). Единственный способ узнать, что тебе ввёл пользователь - побайтно проанализировать введёную строку. Ты лучше более конкретно вопрос задай: чего ты в конечном итоге хочешь?
Yandex
Объявления
23.03.2010, 13:04     Как определить тип переменной?
Ответ Создать тему
Опции темы

Текущее время: 16:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru