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

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

Войти
Регистрация
Восстановить пароль
 
List2006
24 / 16 / 2
Регистрация: 19.12.2009
Сообщений: 366
#1

wchart_t много есть? - C++

25.12.2009, 13:53. Просмотров 743. Ответов 12
Метки нет (Все метки)

В типе данных wchart_t
C++
1
wchart_t variable = L'я';
Размер переменной будет 4 байта, но насколько я знаю для UTF-8 требуется всего 2 байта. Есть ли какие-то экономные версии типов? Конечно это не много, но суммарно потом это все будет попусту кушать в два раза больше чем надо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.12.2009, 13:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос wchart_t много есть? (C++):

Есть очень много маленьких текстовых файлов необходимо слить в один файл - C++
Очень много маленьких файлов размером от 500 КБ до 90 МБ. Максимальная длина строки в файлах 80 символов. Всего таких файлов может быть...

Определить, есть ли в заданном предложении цифры. И если есть, найти их сумму - C++
Определить, есть ли в заданном предложении цифры. И если есть, найти их сумму.

Есть натуральное число n. Проверить, есть ли в том числе 3 одинаковых цифры - C++
Помогите реализировать 2 задания при с использованием указателей. Я коды написал, но не уверен в их правельности и рациональности. ...

Есть ли смысл помечать функции как inline, если их прототип уже есть в .h файле? - C++
Есть ли смысл помечать функции как inline, если их прототип уже есть в .h файле? Функции в одну строчку, сразу в ретарне вычисляет...

Есть натуральное двузначное число n. Верно ли, что среди его цифр есть 11 или 99? - C++
Добрый вечер , такая вот задача : есть натуральное двузначное число n. Верно ли, что среди его цифр есть 11 или 99?

есть код и есть ошибка нужно найти дырку - C++
#include <iostream.h> #include <conio.h> #include <math.h> int main(int argc, char *argv) { int i,size,n; ...

12
RazorQ
578 / 345 / 9
Регистрация: 06.02.2009
Сообщений: 1,386
25.12.2009, 14:28 #2
Вот
В Windows API, тип wchar_t имеет размер 16 бит. Windows API нарушает стандарт ANSI/ISO C, который требует, чтобы символьный тип wchar_t поддерживал все представимые в системе символы в одном объекте wchar_t. Вместо этого, wchar_t в Windows представляет собой символы (либо часть символа) в кодировке UTF-16.

В GNU/Linux тип wchar_t имеет размер 32 бита.
0
List2006
24 / 16 / 2
Регистрация: 19.12.2009
Сообщений: 366
25.12.2009, 15:02  [ТС] #3
Не, мне надо чтобы с linux дружил, думал просто может есть какие-то "экономные" варианты, так как поддержка всех языков мне не нужна.
Еще вопрос.
Пока в стадии изучения, но по документации понял что мне не что не мешает создать в будущем собственный тип с собственными размерностями памяти (скажем 2-3 байта)? Если да, то насколько будет труден этот подход со своими типами и насколько трудна будет реализации конвертации для вывода?

PS экономия очень важна, обработки текста планируется много, а памяти мало на сервере.
0
RazorQ
578 / 345 / 9
Регистрация: 06.02.2009
Сообщений: 1,386
25.12.2009, 15:07 #4
Цитата Сообщение от List2006 Посмотреть сообщение
Не, мне надо чтобы с linux дружил, думал просто может есть какие-то "экономные" варианты, так как поддержка всех языков мне не нужна.
Тогда чем тебе unsigned char не угодил. Русский есть, английский тоже - всё что надо для жизни.
Цитата Сообщение от List2006 Посмотреть сообщение
Пока в стадии изучения, но по документации понял что мне не что не мешает создать в будущем собственный типа с собственными размерностями памяти (скажем 2-3 байта)? Если да, то насколько будет гемморен этот подход со своими типами и насколько трудна будет реализации конвертации для вывода?
В C++ любой класс будет занимать достаточно много памяти, но попробовать можно
0
List2006
24 / 16 / 2
Регистрация: 19.12.2009
Сообщений: 366
25.12.2009, 15:18  [ТС] #5
Тогда чем тебе unsigned char не угодил. Русский есть, английский тоже - всё что надо для жизни.
Идея хорошая, можно хранить в собственной кодировке выше номера 127 и можно функцию конвертации написать из char в wchar_t.
Но при каждой обработке (скажем регулярными выражениями) придется часто конвертировать в wchar_t, даже скажу больше придется постоянно конвертировать (так как суть не хранение, а больше обработка и выдача по типу веб-сайта). В итоги относительно получится размер char + wchar_t

PS
придется походу смирится с 4 байтами, лучше простата кода и удобство кодинга тогда =))
0
odip
Эксперт С++
7158 / 3220 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
26.12.2009, 11:24 #6
но насколько я знаю для UTF-8 требуется всего 2 байта.
Плохо знаешь.

И вообще путаешь все.
В программе удобнее работать с символами, которым занимают фиксированное число байт - например тип wchar_t.

А на диске ты можешь записывать в UTF-8, который имеет переменную длину.
0
List2006
24 / 16 / 2
Регистрация: 19.12.2009
Сообщений: 366
26.12.2009, 12:22  [ТС] #7
Я знаю что UTF-8 может занимать от 2-6 байт, по стандарту wchart_t вроде должен место занимать как int.
Но выше я имел что все языки мне не нужны, а кириллица вся умещается в 2 байтах и другие 2 байта просто в никуда расходуются.
0
CheshireCat
Эксперт С++
2893 / 1242 / 78
Регистрация: 27.05.2008
Сообщений: 3,389
26.12.2009, 13:31 #8
Цитата Сообщение от List2006 Посмотреть сообщение
PS экономия очень важна, обработки текста планируется много, а памяти мало на сервере.
Просто добавить памяти на сервер будет намного дешевле, чем платить зарплату разработчику такого "нестандартного" символьного класса даже за один месяц.
0
List2006
24 / 16 / 2
Регистрация: 19.12.2009
Сообщений: 366
26.12.2009, 17:28  [ТС] #9
Цитата Сообщение от CheshireCat Посмотреть сообщение
Просто добавить памяти на сервер будет намного дешевле, чем платить зарплату разработчику такого "нестандартного" символьного класса даже за один месяц.
Мне всегда нравилось на форуме программистов фраза "платить разработчику..." - немного нелепо? По-моему если бы я бы платил кому-то, то я бы даже тут не спрашивал (логично).
Я и есть разработчик, экономия на арендуемой железе, прямо пропорционально отражается на моей зарплате. Отсюда и интерес к экономии.

Понятно что если процессный чилдер имеет в два раза меньше размер (грубо) то и чилдеров таких можно разместить в два раза больше.
А когда ресурс - время не ограничен лучше писать экономно, чтобы не отражалось на кошельке.

PS работающих с серверами отличные взгляды от прикладного ПО.
0
odip
Эксперт С++
7158 / 3220 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
27.12.2009, 15:40 #10
Я знаю что UTF-8 может занимать от 2-6 байт, по стандарту wchart_t вроде должен место занимать как int.
Но выше я имел что все языки мне не нужны, а кириллица вся умещается в 2 байтах и другие 2 байта просто в никуда расходуются.
Еще раз

1) В программе используй wchar_t. Пусть занимает больше памяти, зато не придется переписывать библиотеки.

2) При записи на диск пиши в UTF-8. Русские буквы будут два байта занимать.

Unicode понимаешь разрабатывали чтобы использовать ВСЕ множество символов.
Специально для тебя не делали версию Unicode, где есть только английские и русские буквы.
0
List2006
24 / 16 / 2
Регистрация: 19.12.2009
Сообщений: 366
10.01.2010, 12:56  [ТС] #11
Цитата Сообщение от odip Посмотреть сообщение
Еще раз

Специально для тебя не делали версию Unicode, где есть только английские и русские буквы.
CP1251 (1 байт unsigned)
0
odip
Эксперт С++
7158 / 3220 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
10.01.2010, 17:08 #12
CP1251 (1 байт unsigned)
А это не Unicode
0
List2006
24 / 16 / 2
Регистрация: 19.12.2009
Сообщений: 366
11.01.2010, 11:22  [ТС] #13
Я знаю, но тоже официальная кодировка.
0
11.01.2010, 11:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.01.2010, 11:22
Привет! Вот еще темы с ответами:

Есть ли в данном массиве элемент, равный заданному числу? Если есть, то вывести номер одного из них. - C++
Есть ли в данном массиве элемент, равный заданному числу? Если есть, то вывести номер одного из них. Напишите программу пожалуйста,очень...

Есть ли тут такие, у кого есть свои идеи ,касающиеся компьютерной безопасности,например, по защите от вирусов? - C++
Есть ли тут такие, у кого есть свои идеи ,касающиеся компьютерной безопасности,например, по защите от вирусов?

Определить: а) Есть ли в нем цифра 3; б) Есть ли цифры 2 и 5 - C++
Всем привет! Помогите сделать программку в с++, условие: Дано натуральное число. Определить: а) Есть ли в нем цифра 3; б) Есть ли цифры 2...

Узнать, есть ли среди элементов массива элементы с нечетными номерами, которые кратны 17, и если есть, посчитать их сумму - C++
Проблема с заданием. Дан одномерный массив. Узнать, есть ли среди них элементы с нечетными номерами, которые кратны 17, и если есть,...


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

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

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