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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.89
jerdeks
1 / 1 / 0
Регистрация: 19.04.2009
Сообщений: 13
#1

Юникод в Си++ - C++

16.08.2011, 13:44. Просмотров 2420. Ответов 7
Метки нет (Все метки)

Здравствуйте.

C++
1
2
3
4
5
6
7
8
9
10
int main(int argc, char *argv[])
{
 
    wstring s1 = L"abracadabra";
    cout << s1.size() << endl; // 11
    wstring s2 = L"абракадабра";
    cout << s2.size() << endl; // 22
 
    getchar();
}
Вроде бы все как надо: файл у меня в utf-8, а она экономит байт на латинских символах. Но вот в чём вопрос. wstring - это контейнер wchar_t, а у них размер 2 байта и поэтому, вроде бы, у обеих строк длина должна быть 22.
1
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.08.2011, 13:44
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Юникод в Си++ (C++):

Iswalpha не переваривает юникод - C++
Задача - проверить является ли символ частью слова. Под частью слова я подразумеваю символы любых азбук, иероглифы, etc. Короче, все чем...

Юникод в двоичную систему - C++
Добрый день! Подскажите, как из файла прочитать знак (на русском языке), после чего напечатать на экране представление знака в двоичной...

Юникод символ в консоли - C++
Здорова! Есть вопрос, от можно ли в консоли как то вывести юникод символы? Допустим есть код символа в юникод U+2660 и как мне его...

Юникод. Шахматные символы - C++
Всем привет. Хочется написать консольные шахматы (цензура), но вот в чем загвоздка: как правильно ввести вот эти коды фигур в программный...

Перевод символа в Юникод - C++
Подскажите пожалуйста как закодировать например вот такую строку привет что бы она стала такой? %D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1%82 ...

Юникод и выход из потока вывода - C++
Visual Studio 2012, консольное приложение. Столкнулся с задачей вывести символы юникода в консоль. Погуглил и для таких целей нашёл...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
silentnuke
Android Programmer
139 / 140 / 5
Регистрация: 08.12.2010
Сообщений: 421
16.08.2011, 13:48 #2
jerdeks,
size() возвращает не размер в байтах, а количество элементов в контейнере. и во втором случае тоже должно быть 11.
0
jerdeks
1 / 1 / 0
Регистрация: 19.04.2009
Сообщений: 13
16.08.2011, 13:50  [ТС] #3
Бинарник выложить? Хотя, я тоже так думал всегда, но факт - пишет во втором случае 22
0
silentnuke
Android Programmer
139 / 140 / 5
Регистрация: 08.12.2010
Сообщений: 421
16.08.2011, 13:57 #4
jerdeks, не планировал компилировать...
как уже и говорил, size() возвращает количество элементов в контейнере, а не их размер в байтах.
1
Миниатюры
Юникод в Си++  
jerdeks
1 / 1 / 0
Регистрация: 19.04.2009
Сообщений: 13
16.08.2011, 14:21  [ТС] #5
=) А теперь конвертни исходник в утф-8. И тогда именно так, как у меня будет и я не понимаю почему
0
silentnuke
Android Programmer
139 / 140 / 5
Регистрация: 08.12.2010
Сообщений: 421
16.08.2011, 14:33 #6
Цитата Сообщение от jerdeks Посмотреть сообщение
=) А теперь конвертни исходник в утф-8. И тогда именно так, как у меня будет и я не понимаю почему
а ну да, все верно, ведь там запись то будет
абракадабра
0
jerdeks
1 / 1 / 0
Регистрация: 19.04.2009
Сообщений: 13
16.08.2011, 14:36  [ТС] #7
угу. и это гениально - чтобы работать с юникодом иходник должен быть в 8ми битной кодировке
0
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1287 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
16.08.2011, 17:10 #8
Цитата Сообщение от jerdeks Посмотреть сообщение
угу. и это гениально - чтобы работать с юникодом иходник должен быть в 8ми битной кодировке
utf-8 это не юникод. Не совсем юникод. В utf-8 символы могут занимать от 1 до 8(кажется) байт. Чтобы их сохранить производится трансляция юникода в мультибайт.
Чтобы юникод сохранялся в двухбайтном виде (без потери русских букаф), нужно сохранять в utf-16.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.08.2011, 17:10
Привет! Вот еще темы с ответами:

Поиск в файле (юникод, кириллица) - C++
Всем доброго времени суток! Задание звучит так: Заданному текстовому файлу составить список слов которые встречаются в тексте и...

Вывод юникод символа в консоль - C++
Здравствуйте. Подскажите пожалуйста как вывести юникод символ в консоль, например этот символ &quot;U+2658&quot;.

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

Юникод в консоли visual studio 2010? - C++
Добрый вечер. Сижу, читаю в интернете, но никак не могу найти решение некоторой проблемы. Предположим, в таблице аски нет того символа,...


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

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

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