2 / 2 / 1
Регистрация: 23.10.2012
Сообщений: 66
|
||||||
1 | ||||||
Парсинг адресной строки, хочу извлечь индекс и название города25.12.2012, 18:45. Показов 4825. Ответов 38
Метки нет (Все метки)
Всем доброго дня.
Хочу распарсить такой вот файлик: ------------------------------------------------------------ 125414, Москва г, Петрозаводская ул, дом № 24а, корпус 2 125493, Москва г, Смольная ул, дом № 5 Москва г, Онежская ул, дом № 11.11.2008" ------------------------------------------------------------ Считать индекс в отдельный массив, потом название города в отдельный массив, скопировать их в общий массив символов и вывести в консоль. Нашел на сайте (cyberforum) пример, сделал по аналогии, чет ни фига не работает, гляньте, если не сложно:
ЗЫ Только не советуйте boost и прочее, задачка вроде элементарная.
0
|
25.12.2012, 18:45 | |
Ответы с готовыми решениями:
38
Как извлечь URL из адресной строки? Выбрать название города из строки Извлечь из строки название директории Нужно из строки типа '<src='dddd.gif' align='left' blabalbla>' извлечь только название файла |
2 / 2 / 1
Регистрация: 23.10.2012
Сообщений: 66
|
|
26.12.2012, 17:34 [ТС] | 21 |
Не, не менялось. Почему-то в этом цикле while вообще ничего не выводится в консоль. Попробовал просто строчку текста вывести, добавив к первой: cout << "test";
Не выводится. А вне цикла - все ок. И что нужно добавить? А главное - прописать пути в Include Directories и Library Directories - и все, или ещё что-то где-то надо прописывать-добавлять?
0
|
2 / 2 / 1
Регистрация: 23.10.2012
Сообщений: 66
|
|
26.12.2012, 18:04 [ТС] | 23 |
Дык а как это - прямо так и прописывать? Там жеж какой-то свой формат, из серии: ;$(FrameworkSDKDir)\include;"
Что добавить: ;$(C:\Program Files\boost\boost_1_50)\include;" ??
0
|
2 / 2 / 1
Регистрация: 23.10.2012
Сообщений: 66
|
|
26.12.2012, 18:09 [ТС] | 25 |
А слово include нужно? Ну, т.е. вот такую строку добавить:
(C:\Program Files\boost\boost_1_50)\include; ?
0
|
2 / 2 / 1
Регистрация: 23.10.2012
Сообщений: 66
|
|
26.12.2012, 18:16 [ТС] | 27 |
Добавил. Ни фига ) Если в проекте прописать: #include <boost/regex.hpp>
подчеркивает, жалуясь на "cannot open source file "boost/regex.hpp" PS А, тьфу блин, у меня же путь другой (не 1_50, а 1_51) PPS Вот, теперь другое дело (ну, в смысле - ничего не подчеркивает)
0
|
2 / 2 / 1
Регистрация: 23.10.2012
Сообщений: 66
|
||||||
26.12.2012, 18:26 [ТС] | 29 | |||||
Да не, все ок. Спасибо тебе за советы. Уже поправил и перекомпилил первый твой вариант(ну, в смысле - полностью), который:
Все компилится и даже результат похож: хрен че выводится в консоль)) Что уже неплохо)
0
|
26.12.2012, 18:31 | 30 |
Насчет std::regex std::regex и boost::regex
Добавлено через 2 минуты Странно, но это говорит только о том что совпадений не находит, значит либо опечатка ли регулярка не подходит по файл. Кстати регулярки чувствительны к локали... т.е к кодировке файла
0
|
2 / 2 / 1
Регистрация: 23.10.2012
Сообщений: 66
|
|
26.12.2012, 18:35 [ТС] | 31 |
Да ладно, зачем нужен этот std::regex, если я уже подключил boost? Думал, его гиморно подлкючать, а выяснилось, что вовсе нет.
setlocale(0, ".1251"); И текст выводится и в файл, и в консоль... (проверял)
0
|
2 / 2 / 1
Регистрация: 23.10.2012
Сообщений: 66
|
||||||
26.12.2012, 18:46 [ТС] | 33 | |||||
Ну да, вроде как cp1251. Тут я уверен на 100500%, потому что перед этим строка конвертируется как раз в cp1251 таким вот нехитрым способом:
Вроде бы boost "на лету" конвертирует кодировки? Потому как без буста я что-то нашел только способ конвертировать сначала в UTF-16 при помощи MultiByteToWideChar, а сразу за этим - в cp1251 при помощи WideCharToMultiByte. Вообще это не рабочий проект конечно же, так, балуюсь (пытаясь побольше в языке разобраться по ходу всего этого)
0
|
26.12.2012, 18:50 | 34 |
Ну подозреваю что там мог закрасться "невидимый" символ.
Попробуйте создать текстовый файл и копирнуть туда пример текста который вы на форуме выкладывали, ну и проверить с ним программу.
0
|
2 / 2 / 1
Регистрация: 23.10.2012
Сообщений: 66
|
|
26.12.2012, 18:56 [ТС] | 35 |
Ты прав, эз южуал. Проверил с теми 3мя строками, что выкладывал на форуме. И правда - все выводится в консоль:
<125414> [Москва] <125493> [Москва] <> [Москва] Круто. Попробую щас поэкспериментировать с этим регулярным выражением) Пасибо.
0
|
2 / 2 / 1
Регистрация: 23.10.2012
Сообщений: 66
|
|
26.12.2012, 19:15 [ТС] | 37 |
Ага, thanx. Я, кстати, понял, почему он ничего не выводил. Не в кодировке дело. Там первой строкой шла такая:
"Москва, Конаковский пр-д, дом № 10" Видимо, при проверке на условие, где в строке должна быть обязательно " г," цикл тут же и заканчивался, раз условие не верно. А там есть и пустые строки вообще, или где NULL написано вместо адреса Насчет кодировки. Да вроде бы и MultiByteToWideChar справляется... Хотя вот именно про boost читал, что там якобы вообще все элементарно и "на лету".
0
|
2 / 2 / 1
Регистрация: 23.10.2012
Сообщений: 66
|
|
26.12.2012, 19:28 [ТС] | 39 |
А я кроме как под виндой и не пробовал кодить) Да и то, что "пробовал", пока что нельзя особенно осмысленным назвать. Так вот, неспешно, рабочий день и прошел. И это радует.
0
|
26.12.2012, 19:28 | |
26.12.2012, 19:28 | |
Помогаю со студенческими работами здесь
39
Поменять местами название второго города таблицы и последнего города, начинающегося на "Нов" Объявить класс «Вокзал» с указанием полей: название вокзала, местонахождение (название города), число направлений, поток пассажиров. Название сайта в адресной строке Получить название города Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |