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

UrlDecode, Работа с кириллицей - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Координаты вектора умножить на число http://www.cyberforum.ru/cpp-beginners/thread1118704.html
вот есть класс, мне нужно координаты вектора умножить на число,через функцию используя прототип.Как это сделать ? Функцию в С++ еще не проходили, сказали делать по подобию Си #include "stdafx.h"...
C++ Калькулятор в столбик Возникла проблема не понимаю почему при умножении 567 * 900 = 50103, (программа недробляна поэтому можно только умножать одинаковые цифры по количеству а точнее показывать цифры для сложение) ... http://www.cyberforum.ru/cpp-beginners/thread1118695.html
C++ Написать функцию выбора пунктов меню стрелками "вверх" "вниз"
Доброго всем времени суток.Пожалуйста подскажите как мне справиться с моей проблемой.Нужно написать функцию выбора пунктов меню стрелками "вверх" "вниз".Вот код #include <windows.h> #include...
Стек на массиве (выводит значение даже при пустом стеке) C++
Здравствуйте, есть код со стеком, вопрос касательно метода класса,а точнее о выводе элемента из стека - pop(). Дело в том что программа выводит значения стека, даже когда он пуст,это же приводит к...
C++ Перевести код с паскаля на C++ http://www.cyberforum.ru/cpp-beginners/thread1118690.html
//Помогите пожалуйста перевести с паскаля на С++ uses crt; type PList=^TList; TList=record inf:string; link:PList; end; var h,head,Pk:PList; s1,...
C++ Написать программу для подсчета количества одинаковых цифр в массиве из 5-ти элементов Только начал разбиратся в массивах. Помогите решыть. Написать программу для подсчета количества одинаковых цифр в массиве из 5-ти элементов. подробнее

Показать сообщение отдельно
Torument
0 / 0 / 1
Регистрация: 13.03.2014
Сообщений: 16
19.03.2014, 10:48  [ТС]
Познакомился с функцией CharToOem(str, tmp); ( CharToOemA(str, tmp); )
Согласно описанию она перекодирует строку (массив символов) в другую кодировку, позволяющую работать с кириллицей.

Не совсем понятно в чем отличие CharToOem(str, tmp); и CharToOemA(str, tmp); - вторая кодирует в ANSI.
Но в С и так эта кодировка используется. Поправьте меня, так как я точно в чем-то ошибаюсь.

Главный вопрос не понятно как ее использовать - во всех примерах имеется уже готовая строка на русском, и эту строку преобразуют с помощью CharToOem, далее работают с ней. А ко мне приходит строка "%D0%9F%D0%BE..."

Добавлено через 19 часов 6 минут
функция CharToOem(str, tmp); тут не в тему, она может потом понадобиться, но не по этой теме.

С кириллицей код выше не работает, так как обрататывает по 2 hex символа. А кириллица кодируется 4-мя знаками (если не считать %).
Как грамотно переделать код чтобы он различал где брать 2 пары символов для одной буквы, а где пару например пробел - %20 или знак равно - %3D?

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
inline int ishex(int x)
{
    return  (x >= '0' && x <= '9')  ||
        (x >= 'a' && x <= 'f')  ||
        (x >= 'A' && x <= 'F');
}
 
int decodeUrl(const char *s, char *dec)
{
    char *o;
    const char *end = s + strlen(s);
    int c;
 
    for (o = dec; s <= end; o++) {
        c = *s++;
        if (c == '+') c = ' ';
        else if (c == '%' && (  !ishex(*s++)    ||
                    !ishex(*s++)    ||
                    !sscanf(s - 2, "%2x", &c)))
            return -1;
   //судя по всему тут надо условие типа: если символ "краказябра" (не при-
   //надлежит какому-то множеству),
   //то надо его запомнить и взять склеить со следующим...
 
        if (dec) *o = c;
    }
 
    return o - dec;
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru