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

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

01.01.2020, 12:25. Показов 17935. Ответов 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
9006 / 4707 / 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
9006 / 4707 / 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
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
02.01.2020, 00:18
Цитата Сообщение от IGPIGP Посмотреть сообщение
мне самому интересно, есть ли способ узнать точно общий размер памяти выделенный для заданной строки, в самом общем случае.
Это зависит от конкретной реализации и используемого аллокатора, так что в самом общем случае не получится, по любому придется ковыряться в "специфичных" кишках.
1
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9006 / 4707 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
02.01.2020, 00:22
Цитата Сообщение от AndryS1 Посмотреть сообщение
Разве метка "лучший ответ" не значит что оно является ответом для ТС?
Вы хотите быть арбитром? Пусть ТС сам решит, что ему нужно. Может именно, размер объекта string ему и был нужен. Или, - может, это что-то добавило к тому, что он ищет. Пока он не сказал ни кто не узнает.
Это же вас не касается. Напишите свой ответ.

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

Добавлено через 11 минут
Цитата Сообщение от IGPIGP Посмотреть сообщение
Мне интересно, есть ли способ получить размер заданного строкового объекта из некоторой группы, в рантайме, в конкретный момент.
Наверное есть, но это далеко за пределами "С++ для начинающих"
1
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9006 / 4707 / 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
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
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
9006 / 4707 / 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
9006 / 4707 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
02.01.2020, 11:20
Цитата Сообщение от BlackStoneBlack Посмотреть сообщение
скорее всего, нужно работать с string.c_str()
В общем, да, наверное.
0
фрилансер
 Аватар для Алексей1153
6455 / 5657 / 1129
Регистрация: 11.10.2019
Сообщений: 15,070
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
6455 / 5657 / 1129
Регистрация: 11.10.2019
Сообщений: 15,070
02.01.2020, 11:59
BlackStoneBlack, что именно не выходит? Тут всё однозначно
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9006 / 4707 / 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru