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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Постройте таблицу значений функции y=f(x) для x[a, b] с шагом h http://www.cyberforum.ru/cpp-beginners/thread1025365.html
#include"conio.h" #include"stdlib.h" #include"stdio.h" #include"math.h" int main() { float x,y,r,q,a,b,h,i; do {
C++ Библиотека TR1 Никогда о ней ранее не слышал, однако в книжке используется. Сказано, что это стандартная библиотека, но скрыта за std (вот так: std::tr1::shared_ptr<class T>). Гуглинг выдал мало, но, если я... http://www.cyberforum.ru/cpp-beginners/thread1025359.html
C++ Создание DLL
Здравствуйте!!!! Помогите пожалуйста создать dll, проблема заключается в том что вылетает множество след. ошибок 2 IntelliSense: требуется точка с запятой ";" c:\Program Files (x86)\Windows...
C++ Задачи на массивы
Здравствуйте, многоуважаемые пользователи! Прошу Вас помощи в начинающих заданиях. Не знаю сюда ли пишу. 1. Дан N-элементный одномерный массив M. В данном массиве необходимо в качестве значения...
C++ Виртуальные функции http://www.cyberforum.ru/cpp-beginners/thread1025341.html
Подскажите пожалуйста, как передать переменную из одной виртуальной функции в другую. Вот код программы работает правильно, но в остальных функциях берет числа из мусора. #include <iostream.h>...
C++ Матрица Дана матрица A(nm). Скорректировать эту матрицу, удалив из нее строку и столбец, на пересечении которых расположен элемент с наибольшим по модулю значением. Вроде должно работать... :wall: ... подробнее

Показать сообщение отдельно
lohness
131 / 103 / 5
Регистрация: 24.04.2008
Сообщений: 945

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

02.12.2013, 11:46. Просмотров 298. Ответов 5
Метки (Все метки)

Есть код:

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 кодом
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru