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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 5.00
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
#1

Парсинг кодировки в начальном теге xml - C++

20.10.2011, 06:46. Просмотров 1052. Ответов 8
Метки нет (Все метки)

Есть строка
XML
1
<?xml version="1.0" encoding="UTF-8"?>
,
XML
1
<?xml version="1.0" encoding="ANSI-1251"?>
, или любая другая, начинающаяся на
XML
1
<?xml
. Нульсимвола после неё нет, но границы найдены (два указателя на символы "<" и ">"), найден указатель на пробел после "<?xml". Сравнивать строку с эталонами целиком как то не охота. Как ещё отсюда можно прочитать кодировку? Остальные возможные атрибуты хочу игнорировать.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.10.2011, 06:46     Парсинг кодировки в начальном теге xml
Посмотрите здесь:

C++ Нет кодировки?!
C++ Кодировки в С++
C++ Перевод кодировки
Парсинг XML C++
C++ Кодировки
C++ Преобразование кодировки
Создание программы на начальном этапе C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
xAtom
 Аватар для xAtom
911 / 736 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
20.10.2011, 08:30     Парсинг кодировки в начальном теге xml #2
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
 
char* xml_encoding(char* dst, const char* xmls) {
   const char* ptr = strstr(xmls, "encoding=");
   if(ptr) 
       sscanf(ptr + 10, "%[^\"]%*c", dst);
   return dst;
}
 
int  main(void) {
  char buf[16];
  puts( xml_encoding(buf, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>") );
  puts( xml_encoding(buf, "<?xml version=\"1.0\" encoding=\"ANSI-1251\"?>") );
  getchar();
  return 0;
}
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
20.10.2011, 12:59  [ТС]     Парсинг кодировки в начальном теге xml #3
xAtom, это ваще к чему? Мне не надо константу пихать в буфер, задача другая.
silent_1991
Эксперт С++
4949 / 3025 / 149
Регистрация: 11.11.2009
Сообщений: 7,025
Завершенные тесты: 1
20.10.2011, 14:52     Парсинг кодировки в начальном теге xml #4
Цитата Сообщение от taras atavin Посмотреть сообщение
Сравнивать строку с эталонами целиком как то не охота
Искать подстроку с возможной кодировкой.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
20.10.2011, 19:29  [ТС]     Парсинг кодировки в начальном теге xml #5
Поиска то мне здесь и не видно.
silent_1991
Эксперт С++
4949 / 3025 / 149
Регистрация: 11.11.2009
Сообщений: 7,025
Завершенные тесты: 1
20.10.2011, 23:01     Парсинг кодировки в начальном теге xml #6
taras atavin, советую присмотреться.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
21.10.2011, 06:40  [ТС]     Парсинг кодировки в начальном теге xml #7
Не вижу. Прокомментируй, пожалуйста.
easybudda
Эксперт С++
 Аватар для easybudda
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
21.10.2011, 09:13     Парсинг кодировки в начальном теге xml #8
Цитата Сообщение от taras atavin Посмотреть сообщение
Не вижу.
Цитата Сообщение от xAtom Посмотреть сообщение
const char* ptr = strstr(xmls, "encoding=");
man strstr
Только я бы не так немного сделал: завёл бы массив с кодировками
C
1
const char * enc[] = { "UTF-8", "WINDOWS-1251", etc... };
проверял бы строку на предмет того, что она начинается с
Цитата Сообщение от taras atavin Посмотреть сообщение
<?xml version="1.0" encoding
а потом в цикле по массиву искал совпадения. Собственно и возвращать при этом можно индекс найденной подстроки в массиве, им же (индексом) и дальше пользоваться...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.10.2011, 13:34     Парсинг кодировки в начальном теге xml
Еще ссылки по теме:

C++ Парсинг xml
Дана матрица A(N, N) набрать программу на начальном уровне C++
Кодировки (ошибки кодировки) в логировании C++
Сохранение кодировки при чтении XML-файла C++
В чём отличия кодировки ms dos от кодировки ms windows? C++

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

Или воспользуйтесь поиском по форуму:
silent_1991
Эксперт С++
4949 / 3025 / 149
Регистрация: 11.11.2009
Сообщений: 7,025
Завершенные тесты: 1
21.10.2011, 13:34     Парсинг кодировки в начальном теге xml #9
Цитата Сообщение от easybudda Посмотреть сообщение
Только я бы не так немного сделал
Я так и предлагал))
Yandex
Объявления
21.10.2011, 13:34     Парсинг кодировки в начальном теге xml
Ответ Создать тему
Опции темы

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