Russian Qt Forum
Май 08, 2024, 21:15 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QStringList in bytes  (Прочитано 3389 раз)
thechicho
Гость
« : Ноябрь 08, 2011, 13:55 »

как узнать размер в байтах? или он какой-то стандартный идет?
Записан
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #1 : Ноябрь 08, 2011, 14:14 »

Что значит размер в байтах? Общий объём занимаемой памяти всеми элементами или что?
Записан
thechicho
Гость
« Ответ #2 : Ноябрь 08, 2011, 15:11 »

ну в байтах же память и измеряется.
да, общий объём занимаемой памяти всеми элементами, как узнать можно
« Последнее редактирование: Ноябрь 08, 2011, 15:14 от thechicho » Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4727



Просмотр профиля WWW
« Ответ #3 : Ноябрь 08, 2011, 15:21 »

наверное так:
Код
C++ (Qt)
int total = 0;
foreach (const QString &s, list)
   total += s.toUtf8().size();
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #4 : Ноябрь 08, 2011, 15:33 »

наверное так:
Код
C++ (Qt)
int total = 0;
foreach (const QString &s, list)
   total += s.toUtf8().size();
Совсем неправильно. В QString символы хранятся в 16-ти битном виде, да и сами внутренние структуры QList и QString что-то да весят.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4727



Просмотр профиля WWW
« Ответ #5 : Ноябрь 08, 2011, 16:19 »

я так понимаю ТС хочет узнать именно размер данных, а не переменных (для последнего должен подойти sizeof). латинские символы реально используют лишь 1 байт, а не 2, а toUtf8() это учитывает если не ошибаюсь. но если использовать принудительно 16 бит, тогда total += s.length() * 2;
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #6 : Ноябрь 08, 2011, 18:27 »

я так понимаю ТС хочет узнать именно размер данных
Я переспрашивал выше. Он ответил общий объём.

для последнего должен подойти sizeof
sizeof c указателями? Не прокатит.

латинские символы реально используют лишь 1 байт, а не 2, а toUtf8() это учитывает если не ошибаюсь
Цитировать
UTF-16 там, а не UTF-8:QString stores a string of 16-bit QChars, where each QChar corresponds one Unicode 4.0 character. (Unicode characters with code values above 65535 are stored using surrogate pairs, i.e., two consecutive QChars.)
так что латинские занимают 2 байта (а не 1), а некоторые экзотические символы - 4 байта.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.081 секунд. Запросов: 22.