Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.53/88: Рейтинг темы: голосов - 88, средняя оценка - 4.53
half-horse half-gateway
117 / 83 / 43
Регистрация: 10.05.2016
Сообщений: 563

Получить размер строки в байтах

01.01.2020, 12:25. Показов 18529. Ответов 40

Студворк — интернет-сервис помощи студентам
Добрый день! Имеется, например, следующая строка:
C++
1
2
int a = rand() % 1000, b = rand() % 200;
string s = "a = " + to_string(a) + "b = " + to_string(b);
Необходимо вычислить размер занимаемой данной строкой памяти. Каким образом это возможно сделать? Заранее спасибо за ответ.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.01.2020, 12:25
Ответы с готовыми решениями:

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

Размер объекта в байтах
Разъясните пожалуйста следующую ситуацию. Почему при таком class A { int x; int y; double a; }; и таком...

Размер файла в байтах
Во первых надо узнать размер файла в байтах, фаил открыт потока ifstream fr, функция sizeof(fr) возвращяет значение 176, фаил имеет...

40
653 / 466 / 183
Регистрация: 23.04.2019
Сообщений: 1,987
01.01.2020, 22:41
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от IGPIGP Посмотреть сообщение
Кто кого нашёл?
Шло рассуждение с Croessmah и всё закончилось тем что ТС не правильно сформулировал тему
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
01.01.2020, 23:11
Цитата Сообщение от AndryS1 Посмотреть сообщение
Шло рассуждение с Croessmah и всё закончилось тем что ТС не правильно сформулировал тему
Не понимаю, что заставляет вас это писать. Вы оцениваете происходящее? Почему бы вам не написать свой вариант ответа, AndryS1?
Я начал с того что:
Цитата Сообщение от IGPIGP Посмотреть сообщение
BlackStoneBlack, если
Цитата Сообщение от BlackStoneBlack Посмотреть сообщение
Посмотреть сообщение
занимаемой данной строкой памяти
то возможно вы ищете:
где в явной форме выразил тот факт, что вопрос мене не ясен. Размер объекта string это может быть понято как размер строки. И предложил ответ. Обсуждение с Croessmah начато не мной и в форме "при чём тут?". Пользы в дальнейшем диалоге для темы, имхо, не много. Далее, я обратился к ТС, чтобы сказать об этом, потому что вопрос темы остался не ясен и не раскрыт. Не уверен в том, что должен давать вам подобные объяснения.
Напишите свой ответ.
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
01.01.2020, 23:31
Цитата Сообщение от IGPIGP Посмотреть сообщение
Почему бы вам не написать свой вариант ответа
мой вариант ответа, что ответа нет, либо он есть ~=~ +1 = ~
0
01.01.2020, 23:44

Не по теме:

Цитата Сообщение от IGPIGP Посмотреть сообщение
обратился к ТС, чтобы сказать об этом, потому что вопрос темы остался не ясен и не раскрыт
Мне кажется на тот момент ТС уже пометил ваш ответ как "Лучший ответ"

0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
02.01.2020, 00:07
Цитата Сообщение от AndryS1 Посмотреть сообщение
Мне кажется на тот момент ТС уже пометил ваш ответ как "Лучший ответ"
AndryS1, вы сконцентрированы на оценках. При чём тут оценки? Я дал ответ и в нём - вопрос.
Дайте свой. Мне ваша оценка ни к чему, если вам нужно явно сказать.
Цитата Сообщение от _stanislav Посмотреть сообщение
мой вариант ответа, что ответа нет, либо он есть ~=~ +1 = ~
_stanislav, не понял, что ты хочешь сказать. Твой вариант есть. Он выражает минимальный объём, который гарантирует сохранение данных. Однако, на деле, памяти может потребоваться больше. Если не учитывать варианты для разделяемого представления, где сумма размеров данных для строковых объектов не равна объёму памяти, который данные этой группы объектов занимают.
_stanislav, мне самому интересно, есть ли способ узнать точно общий размер памяти выделенный для заданной строки, в самом общем случае.
0
653 / 466 / 183
Регистрация: 23.04.2019
Сообщений: 1,987
02.01.2020, 00:11
Цитата Сообщение от IGPIGP Посмотреть сообщение
При чём тут оценки
Разве метка "лучший ответ" не значит что оно является ответом для ТС?
0
 Аватар для zayats80888
6354 / 3525 / 1428
Регистрация: 07.02.2019
Сообщений: 9,008
02.01.2020, 00:18
Цитата Сообщение от IGPIGP Посмотреть сообщение
мне самому интересно, есть ли способ узнать точно общий размер памяти выделенный для заданной строки, в самом общем случае.
Это зависит от конкретной реализации и используемого аллокатора, так что в самом общем случае не получится, по любому придется ковыряться в "специфичных" кишках.
1
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
02.01.2020, 00:22
Цитата Сообщение от AndryS1 Посмотреть сообщение
Разве метка "лучший ответ" не значит что оно является ответом для ТС?
Вы хотите быть арбитром? Пусть ТС сам решит, что ему нужно. Может именно, размер объекта string ему и был нужен. Или, - может, это что-то добавило к тому, что он ищет. Пока он не сказал ни кто не узнает.
Это же вас не касается. Напишите свой ответ.

Добавлено через 3 минуты
Цитата Сообщение от zayats80888 Посмотреть сообщение
Это зависит от конкретной реализации и используемого аллокатора, так что в самом общем случае не получится, по любому придется ковыряться в "специфичных" кишках.
zayats80888, это несомненно. Однако получить размер типа на данном компиляторе не сложно, обычно. Несмотря на то, что размер int, например, может зависеть от платформы.
Мне интересно, есть ли способ получить размер заданного строкового объекта из некоторой группы, в рантайме, в конкретный момент.
Это и будет для меня критерием, того имеет ли вопрос, корректный ответ.
0
 Аватар для zayats80888
6354 / 3525 / 1428
Регистрация: 07.02.2019
Сообщений: 9,008
02.01.2020, 01:11
Цитата Сообщение от IGPIGP Посмотреть сообщение
Это и будет для меня критерием, того имеет ли вопрос, корректный ответ.
Если речь о вопросе ТС, то судя по всему речь идет именно о (s.size() + 1) * sizeof(std::string::value_type) т.е. о размере нультерминальной строки

Добавлено через 11 минут
Цитата Сообщение от IGPIGP Посмотреть сообщение
Мне интересно, есть ли способ получить размер заданного строкового объекта из некоторой группы, в рантайме, в конкретный момент.
Наверное есть, но это далеко за пределами "С++ для начинающих"
1
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
02.01.2020, 01:19
zayats80888, может быть. Для std::string который std::basic_string<char>, sizeof(std::string::value_type) это sizeof(char) и на платформа известных новичкам) (мне например) - один байт. Тогда в сухом остатке:
s.size() + 1)
при чём не учитывая capacity. Допустим. Но если уж учитывать терминатор, то почему не учесть память самого объекта (на стеке, к примеру)?
zayats80888, я не спорю, - больше вариантов, - лучше)
1
 Аватар для zayats80888
6354 / 3525 / 1428
Регистрация: 07.02.2019
Сообщений: 9,008
02.01.2020, 01:27
Цитата Сообщение от IGPIGP Посмотреть сообщение
Но если уж учитывать терминатор, то почему не учесть память самого объекта (на стеке, к примеру)?
Можно и учесть(правда к чему тогда тот "сложный" код, что ТС прилепил к вопросу), короче
Цитата Сообщение от IGPIGP Посмотреть сообщение
больше вариантов, - лучше)
Добавлено через 3 минуты
Цитата Сообщение от IGPIGP Посмотреть сообщение
Для std::string который std::basic_string<char>, sizeof(std::string::value_type) это sizeof(char) и на платформа известных новичкам)
Ну я не совсем корректно написал, правильнее было sizeof(decltype(s)::value_type)
1
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
02.01.2020, 01:37
Цитата Сообщение от zayats80888 Посмотреть сообщение
к чему тогда тот "сложный" код, что ТС прилепил к вопросу
Это глубоко философский вопрос. Если посмотреть на строку:
C++
1
"a = " + to_string(a) + "b = " + to_string(b)
становится ясно, что размер а, который sizeof(int) и обычно это 4 - сольётся с b, то есть строка будет несколько странной. Но если идти по формальным признакам то
C++
1
2*sizeof(int)+2*5*sizeof(char)
И это инфа времени компиляции. Может получиться 18)
Но я не углублялся.
0
02.01.2020, 01:42

Не по теме:

Цитата Сообщение от IGPIGP Посмотреть сообщение
2*sizeof(int)+2*5*sizeof(char)
Вы так не шутите, могут не понять :)

0
02.01.2020, 01:47

Не по теме:

Цитата Сообщение от zayats80888 Посмотреть сообщение
Вы так не шутите, могут не понять :)
это я наврал конечно. Размер строки от целого числа можно получить только из строки, что верно то верно. Но почему эта строка должна сливаться с с символом обозначающим имя числа - b ?? Пробела же не хватает. Смысл моей последней сентенции в том, что я воспринял вопрос в общеи виде и не вглядываясь в конкретную строку. :)

0
half-horse half-gateway
117 / 83 / 43
Регистрация: 10.05.2016
Сообщений: 563
02.01.2020, 11:07  [ТС]
Цитата Сообщение от IGPIGP Посмотреть сообщение
Вопрос требует уточнения.
Ну, тогда подробнее. По сути, это надо было в раздел C++ WinAPI писать, но я не подумал, что всё будет так сложно. В общем, суть в том, что мне нужно записать строку в файл через отображение файла на память. И, если я правильно всё понимаю, то мне нужно получить размер занимаемой строкой памяти, которая формируется подобным из шапки образом, дабы файл формировался корректно. То есть через MapViewOfFile я получаю отображение необходимого размера, куда я и должен записать данные из формированной строки. Причем MapViewOfFile приводится к char*, а, значит, скорее всего, нужно работать с string.c_str().
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
02.01.2020, 11:20
Цитата Сообщение от BlackStoneBlack Посмотреть сообщение
скорее всего, нужно работать с string.c_str()
В общем, да, наверное.
0
фрилансер
 Аватар для Алексей1153
6510 / 5772 / 1135
Регистрация: 11.10.2019
Сообщений: 15,420
02.01.2020, 11:32
BlackStoneBlack, тогда в файле должно быть место под string.size() байтов. Завершающий ноль не входит в эту длину
0
half-horse half-gateway
117 / 83 / 43
Регистрация: 10.05.2016
Сообщений: 563
02.01.2020, 11:36  [ТС]
Алексей1153, тоже вот об этом подумал. Но пока что не особо выходит.
0
фрилансер
 Аватар для Алексей1153
6510 / 5772 / 1135
Регистрация: 11.10.2019
Сообщений: 15,420
02.01.2020, 11:59
BlackStoneBlack, что именно не выходит? Тут всё однозначно
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
02.01.2020, 12:07
BlackStoneBlack, я не вникал, во всю эту си-шную магию (С+winapi -хорошие разделы, кстати), но вероятно вам придётся иметь дело с каким-то способом буферизации. В этом смысле, сплиттер для записей отдельных строк не помешал бы. Терминатор - вполне хорош. Свой пацан, хоть и из Австрии. И всегда I will be back! Ну то есть, как все мы тут. В конце строки - значит. Ну и чтобы тот кто будет это декодировать не оказался там же, может BOM соорудить?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.01.2020, 12:07

Размер переменных в байтах
Доброго времени суток! Не могу разобраться в переводах из шестнадцатиричной системы счисления в двоичную. Ячейка в памяти компьютера...

Вычислить размер файла в байтах
используя функции seekg и tellg class fileTxt { public: fileTxt() {}; ~fileTxt() {}; template&lt;class T&gt; void writeFile(T...

Подсчитать размер файлов F1 и F2 (в байтах)
Постановка задачи: Создать текстовый файл F1 не менее, чем из 10 строк и записать в него информацию Выполнить задание. При разработке...

Как измерить размер функции в байтах?
вот есть функция. сколько байт она занимает?

Как узнать размер std::wstring в байтах?
:) ну как бэ вопрос в шапке :)


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru