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

Перевод символа в Юникод - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ что то не так с компилятором? http://www.cyberforum.ru/cpp-beginners/thread325376.html
есть класс, который переписан с книги Лафоре Р. #include <cstdlib> #include <iostream> #include <conio.h> class time { private: int hrs, mins, secs;
C++ CreateFileA как записать путь.(нужно именно путь, а то так создает в папке приложения) HANDLE hfile1 = CreateFile("E:\res.txt", GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, 0, NULL); по... http://www.cyberforum.ru/cpp-beginners/thread325373.html
C++ Функции и модули двумерной матрицы
Доброго всем дня. Дорогие пользователи форумом, пожалуйста помогите,завтра сдавать зачет по С++ а у меня 2 лабы еще не готовы. Вот задание: В каждой строке найти максимум среди четных элементов, а в...
Вычисление суммы и разности денежных величин C++
Создаю программу для вычисления суммы и разности денежных велечин. Вроде делаю все правильно, но заместо того чтобы программа вышла из условного оператора switch и перешла к моей конструкции...
C++ Решить для экзамена http://www.cyberforum.ru/cpp-beginners/thread325350.html
Здравствуйте товарищи программисты. Мне очень нужна помощь с задачами. Экзамен завтра, а я в программировании не силен (Точнее вообще не шарю). Дело в том, что дан конкретный список задач, я пытался...
C++ Упражнения по C++ Люди добрые весь гугл обыскал но не нашел нормального задачника по с++ (имеется в виду задачи идут по уровню сложности от меьшего к большему), конечно я нашел пару книг но там тема int а в решение и... подробнее

Показать сообщение отдельно
Danvern
40 / 39 / 3
Регистрация: 22.06.2010
Сообщений: 415
Записей в блоге: 1
05.07.2011, 20:17  [ТС]
это все вики педии написано

Цитата Сообщение от schdub Посмотреть сообщение
почему 6? как связаны эти куски? это одно понятие? что если необходимо будет изменить это значение.
потому что каждая буква например "п" в url кодировке "%D0%BF" собственно в массиве должно быть в 6 раз больше места чем в начальном.
Цитата Сообщение от schdub Посмотреть сообщение
что это за значения ?
вот из википедии
0x00000080 — 0x000007FF (128 - 2047) 110xxxxx 10xxxxxx кириллица, расширенная латиница, арабский, армянский, греческий, еврейский и коптский алфавит; сирийское письмо, тана, нко; МФА; некоторые знаки препинания
Добавлено через 24 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include <iostream>
#include <stdio.h>
using namespace std;
 
int main()
{
    setlocale(0,"");
    system("cls");
 
    char s[] = "hello Word";
    char illegalChar[] = "0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz";
    bool whatIllegal = false;
    char temp[6];
    int hos , los ,lenStr = strlen(s);
    long int sym;
    char * result = new char[lenStr * 6 + 1];
    wchar_t * sw = new wchar_t[lenStr + 1];
 
    memset(result,0,lenStr * 6  + 1);
    memset(sw,0,lenStr + 1);
 
    mbstowcs(sw,s,lenStr);
 
    for(int i = 0;i < (int)strlen(s);i++)
    {
        
        if((int)sw[i] <= 127)
        {
            memset(temp,0,sizeof(temp));
            for(int k = 0;k < sizeof(illegalChar);k++)
            {
                if(illegalChar[k] == sw[i])
                {
                    whatIllegal = true;
                    break;
                }
            }
 
            lenStr = strlen(result);
 
            if(!whatIllegal)
            {
                sprintf(temp,"%X",(int)sw[i]);
                result[lenStr] = '%';
                result[lenStr + 1] = temp[0];
                result[lenStr + 2] = temp[1];
            }
            else
            {
                result[lenStr] = sw[i];
                whatIllegal = false;
            }
        }
 
        if((int)sw[i] >= 128 && (int)sw[i] <= 2047)
        {
            hos = sw[i] >> 6;
            los = (hos << 6) ^ sw[i];
            sym = ( ( ( ( ( 6 << 5 ) ^ hos ) << 2 ) ^ 2 ) << 6 ) ^ los;
 
            memset(temp,0,sizeof(temp));
 
            sprintf(temp,"%X",sym);
 
            lenStr = strlen(result);
            result[lenStr] = '%';
            result[lenStr + 1] = temp[0];
            result[lenStr + 2] = temp[1];
            result[lenStr + 3] = '%';
            result[lenStr + 4] = temp[2];
            result[lenStr + 5] = temp[3];
        }
    }
    cout << result << endl;
 
    delete[] sw;
    delete[] result;
 
    getchar();
    return 0;
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru