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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
noob123
0 / 0 / 0
Регистрация: 22.11.2009
Сообщений: 33
#1

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

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

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

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

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

Программа, вычисляющая размер памяти, отводимой под символ - C++
Написать программу, вычисляющую размер памяти, отводимой под символ \а (звуковой сигнал). какой тип для этого нужно использовать (int,...

Тип, размер и описание переменных в коде. - C++
Помогите описать все переменные по этой программе: Пожалуйста 1-Тип 2-Размер 3-Описание #include <iostream> #include...

Размер ячеек памяти - C++
Каков размер ячеек памяти? Вычитал, что одна ячейка равна одному байту. Но тут возник вопрос: Предположим, в памяти хранится int...

Размер области памяти - C++
Добрый вечер. Подскажите, пожалуйста, почему при выполнении данной программы объем памяти по каждой строке равен 4? Ведь по идее...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
oxotnik
1590 / 1067 / 33
Регистрация: 21.08.2008
Сообщений: 4,545
Записей в блоге: 1
05.05.2010, 10:26 #2
Цитата Сообщение от noob123 Посмотреть сообщение
некоторая строка string, содержащая какой нибудь тип данного, например "int".
Это как понять???
строка она и в африке строка...
в чем смысл задачи? для чего нужно узнать размер?
1
Vourhey
Почетный модератор
6481 / 2256 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
05.05.2010, 10:27 #3
noob123, если символы однобайтовые, то строка занимает размер равный своей длине +1.
1
taras atavin
Ушёл с форума.
3569 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
05.05.2010, 10:30 #4
Цитата Сообщение от oxotnik Посмотреть сообщение
Это как понять???
У него в строке записано символьное имя типа. Прямо так: "int".
1
Vourhey
Почетный модератор
6481 / 2256 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
05.05.2010, 10:31 #5
а, вон оно как...ну ты жоский тип
Никаки. Читать строку, определять, какой там тип записан и вызывать sizeof для этого типа.
1
taras atavin
Ушёл с форума.
3569 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
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
Ушёл с форума.
3569 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
05.05.2010, 10:36 #8
Типов не так много и они все должны быть известны на этапе компиляции. Так что пиши разбор строки, определяй, какой именно тип в ней записан и переходи на соответствующий return sizeof.
0
easybudda
Модератор
Эксперт CЭксперт С++
9626 / 5574 / 947
Регистрация: 25.07.2009
Сообщений: 10,709
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.05.2010, 11:25
Привет! Вот еще темы с ответами:

Размер памяти в байтах - C++
Подскажите, пожалуйста, как узнать колл-во байт между двумя указателями? Т.е. к примеру: int *a = new int; int *b = new int; int...

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

Где хранить размер блока памяти? - C++
Пишу менеджер памяти. Храню размер в первых 4x байтах выделенной памяти. В коде все вызовы new заменяю на следующее: //Iterator...

Realloc не хочет увеличивать размер памяти - C++
//----H----------------------------------------------------------------------- #ifndef Realloc_stH #define Realloc_stH ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
05.05.2010, 11:25
Ответ Создать тему
Опции темы

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