Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
noob123
0 / 0 / 0
Регистрация: 22.11.2009
Сообщений: 33
1

Размер памяти под тип.

05.05.2010, 10:25. Просмотров 618. Ответов 8
Метки нет (Все метки)

Добрый день. Возник маленький вопрос, пусть у нас есть некоторая строка string, содержащая какой нибудь тип данного, например "int". Так вот как мне узнать какой размер памяти занимает данный тип.
Пробовал sizeof, но он как я понял со строкой не работает..
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.05.2010, 10:25
Ответы с готовыми решениями:

1.Написать программу, вычисляющую размер памяти, отводимой компилятором под тип int
#include "iostream.h" int main() { int x; cin>>x; cout<<"razmer tipa...

Размер и выделение памяти под открытие файла.
Всем привет. Уважаемые знатоки, вопрос в следующем) Значит задача такая,...

Программа, вычисляющая размер памяти, отводимой под символ
Написать программу, вычисляющую размер памяти, отводимой под символ \а ...

Тип, размер и описание переменных в коде.
Помогите описать все переменные по этой программе: Пожалуйста 1-Тип 2-Размер...

Размер области памяти
Добрый вечер. Подскажите, пожалуйста, почему при выполнении данной программы...

8
oxotnik
1628 / 1101 / 75
Регистрация: 21.08.2008
Сообщений: 4,625
Записей в блоге: 1
05.05.2010, 10:26 2
Цитата Сообщение от noob123 Посмотреть сообщение
некоторая строка string, содержащая какой нибудь тип данного, например "int".
Это как понять???
строка она и в африке строка...
в чем смысл задачи? для чего нужно узнать размер?
1
Vourhey
Почетный модератор
6493 / 2268 / 185
Регистрация: 29.07.2006
Сообщений: 12,534
05.05.2010, 10:27 3
noob123, если символы однобайтовые, то строка занимает размер равный своей длине +1.
1
taras atavin
4205 / 1768 / 211
Регистрация: 24.11.2009
Сообщений: 27,565
05.05.2010, 10:30 4
Цитата Сообщение от oxotnik Посмотреть сообщение
Это как понять???
У него в строке записано символьное имя типа. Прямо так: "int".
1
Vourhey
Почетный модератор
6493 / 2268 / 185
Регистрация: 29.07.2006
Сообщений: 12,534
05.05.2010, 10:31 5
а, вон оно как...ну ты жоский тип
Никаки. Читать строку, определять, какой там тип записан и вызывать sizeof для этого типа.
1
taras atavin
4205 / 1768 / 211
Регистрация: 24.11.2009
Сообщений: 27,565
05.05.2010, 10:31 6
Цитата Сообщение от Vourhey Посмотреть сообщение
если символы однобайтовые, то строка занимает размер равный своей длине +1.
Ему не длина строки нужна, а длина инта, дабла, чара и чего ещё попросит юзверь.
1
noob123
0 / 0 / 0
Регистрация: 22.11.2009
Сообщений: 33
05.05.2010, 10:33  [ТС] 7
Ну в смысле у нас есть строка хранящая тип данного, например, string[] = "long int"; Мне нужно узнать объем памяти под тип, который строка имеет значением, ну т.е. равносильное вот этому sizeof(long int)
0
taras atavin
4205 / 1768 / 211
Регистрация: 24.11.2009
Сообщений: 27,565
05.05.2010, 10:36 8
Типов не так много и они все должны быть известны на этапе компиляции. Так что пиши разбор строки, определяй, какой именно тип в ней записан и переходи на соответствующий return sizeof.
0
easybudda
Модератор
Эксперт CЭксперт С++
10148 / 6055 / 1522
Регистрация: 25.07.2009
Сообщений: 11,476
05.05.2010, 11:25 9
noob123,
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <map>
#include <string>
...
std::map<std::string, size_t> ts;
ts["int"] = sizeof(int);
ts["double"] = sizeof(double);
// etc...
...
std::string type_name("int");
std::map<std::string, size_t>::const_iterator found;
size_t type_size = ( ( found = ts.find(type_name) ) == ts.end() ) ? 0 : found->second;
// type_size получает значение 0 в случае, если заданное имя типа не найдено, или  соответствующий имени типа размер. Ну должно бы, не проверял...
1
05.05.2010, 11:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.05.2010, 11:25

Размер ячеек памяти
Каков размер ячеек памяти? Вычитал, что одна ячейка равна одному байту. Но тут...

Размер памяти в байтах
Подскажите, пожалуйста, как узнать колл-во байт между двумя указателями? Т.е....

Как уменьшить размер выделенной памяти
Доброе утро! пишет: переопределение формального параметра &quot;text&quot; :(...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru