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

поиск в win1251 строке работает, а в UTF-8 - нет - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Builder Отображение круга, разбитого на секторы (Дельфи -> Билдер) http://www.cyberforum.ru/cpp-beginners/thread1025392.html
Добрый день. Необходимо разработать приложение, отображающее круг, разбитый на m равных секторов. Все сектора должны иметь различный, меняющийся через k секунд, цвет. Значения m и k вводятся пользователем. Имеется код решенной задачи на Delphi 7.0. Нужно переделать под Borland C++ Builder 6. unit Unit1; interface uses
C++ Постройте таблицу значений функции y=f(x) для x[a, b] с шагом h #include"conio.h" #include"stdlib.h" #include"stdio.h" #include"math.h" int main() { float x,y,r,q,a,b,h,i; do { http://www.cyberforum.ru/cpp-beginners/thread1025365.html
Библиотека TR1 C++
Никогда о ней ранее не слышал, однако в книжке используется. Сказано, что это стандартная библиотека, но скрыта за std (вот так: std::tr1::shared_ptr<class T>). Гуглинг выдал мало, но, если я правильно понял, она устарела? Точнее, не устарела, а слилась с Boost, так как изначально сама выполняла функцию "полигона" новых возможностей, которую в последствии перехватил Boost? Так ли это?
C++ Создание DLL
Здравствуйте!!!! Помогите пожалуйста создать dll, проблема заключается в том что вылетает множество след. ошибок 2 IntelliSense: требуется точка с запятой ";" c:\Program Files (x86)\Windows Kits\8.0\Include\um\Iads.h 41 и 93 IntelliSense: идентификатор "interface" не определен c:\Program Files (x86)\Windows Kits\8.0\Include\um\Iads.h 447 вот сам код #include "stdafx.h" #pragma...
C++ Задачи на массивы http://www.cyberforum.ru/cpp-beginners/thread1025342.html
Здравствуйте, многоуважаемые пользователи! Прошу Вас помощи в начинающих заданиях. Не знаю сюда ли пишу. 1. Дан N-элементный одномерный массив M. В данном массиве необходимо в качестве значения последнего элемента записать произведение всех элементов массива, стоящих на нечетных местах. Форумчане, помогите пожалуйста, остался последний экзамен.
C++ Виртуальные функции Подскажите пожалуйста, как передать переменную из одной виртуальной функции в другую. Вот код программы работает правильно, но в остальных функциях берет числа из мусора. #include <iostream.h> #include <conio.h> class convert { protected: double d; public: convert(double d1); convert(); подробнее

Показать сообщение отдельно
lohness
 Аватар для lohness
124 / 96 / 4
Регистрация: 24.04.2008
Сообщений: 885
02.12.2013, 11:46     поиск в win1251 строке работает, а в UTF-8 - нет
Есть код:

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
.......
URLDownloadToFile(0, urlfile1.c_str(), L"SAVENAME1",0,0); 
filenam = "SAVENAME1";
 
..................
..................
 
ifstream fin(filenam);
if (!fin) cout << "Ошибка исходного файла!" << endl;
else
{
string str;
int number = 1;
while (getline(fin, str))
{
 
string::size_type n = str.find("jpg");
 
if (n != string::npos)
{
 
str.erase(str.begin(), str.begin() + str.find("img-fotki.yandex"));
auto it = str.find("XXXL");
if(it != string::npos)
{
str.replace(str.find("XXXL"), 4, "orig");
it = str.find('\"');
} 
auto it1 = str.find("XXL");
if(it1 != string::npos)
{
str.replace(str.find("XXL"), 3, "orig");
it1 = str.find('\"');
} 
 
auto it2 = str.find("XL");
if(it2 != string::npos)
{
str.replace(str.find("XL"), 2, "orig");
it2 = str.find('\"');
} 
 
auto it3 = str.find("L");
if(it3 != string::npos)
{
str.replace(str.find("L"), 1, "orig");
it3 = str.find('\"');
} 
гЂЂ
auto it4 = str.find("S");
if(it4 != string::npos)
{
str.replace(str.find("S"), 1, "orig");
it4 = str.find('\"');
} 
auto it5 = str.find("M");
if(it5 != string::npos)
{
str.replace(str.find("M"), 1, "orig");
it5 = str.find('\"');
}
str.erase(str.begin() + str.find('\"'), str.end());
 
........

Так вот если предварительно сохранить страницу в кодировке 1251 в файл SAVENAME1, то эта часть кода отрабатывает правильно оставляя от страницы только ссылки на картинки.
Если же дать программе самой скачать страничку (URLDownloadToFile), то она скачивается в кодировке UTF-8
и код вынимает из файла только две первые ссылки на картинки.

Визуально разница в том что в кодировке 1251 строчки которые нужно обрабатывать имеют вид:

HTML5
1
rel="nofollow"><IMG width="800" height="434" title="" alt="" src= " http://img-fotki.yandex.ru/get/9319/224143968.8/0_cfff7_ab09216d_XL.jpg "
а в UTF она гораздо длиннее и в одной строке файла включены несколько нужных ссылок
в итоге берется только одна ссылка, а после нее обработка строки заканчивается.

Архивы с кодом обрабатываемой страницы:
[cut]


Правильно ли я понимаю что надо предварительно разбить файл с UTF кодом
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 05:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru