Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1] 2  Все   Вниз
  Печать  
Автор Тема: Регулярные выражения и boost  (Прочитано 36092 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Dr.Yevhenius
Опытный

ua
Offline Offline
Пол: Мужской

« : 14-01-2010 06:54 » 

Сабж. Как можно сделать?
По заданию, нужно использовать регулярные выражения. Нашел хороший код на http://msdn.microsoft.com/ru-ru/library/a9z6549f.aspx. Но там используется String^. А у меня все строки, грубо говоря, в char*. Код
Код:
char * cstr = 0; // Ноль для наглядности
...
String^ str;
str = cstr;
не пляшет. На http://msdn.microsoft.com/en-us/library/system.string.aspx прочитал, что это (String) строка символов Юникода. wchar_t* тоже не подходит.
Помогите, пожалуйста.
« Последнее редактирование: 14-01-2010 12:17 от Inkognito » Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #1 : 14-01-2010 06:56 » 

а что такое String^ ?
Записан

Dr.Yevhenius
Опытный

ua
Offline Offline
Пол: Мужской

« Ответ #2 : 14-01-2010 06:57 » 

Сплошь и рядом используеться в MVS2008.
Цитата
System::String
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #3 : 14-01-2010 06:59 » 

шарп что ли ? ) Разделом ошибся ?
Записан

Dr.Yevhenius
Опытный

ua
Offline Offline
Пол: Мужской

« Ответ #4 : 14-01-2010 06:59 » 

Цитата
Язык: C++
Microsoft Visual Studio 2008
Version 9.0.30729.1 SP
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #5 : 14-01-2010 07:01 » 

нет в C++ оператора ^ , применимого к типу данных Улыбаюсь
Записан

Dr.Yevhenius
Опытный

ua
Offline Offline
Пол: Мужской

« Ответ #6 : 14-01-2010 07:06 » 

Visual C++ Express Edition.
Создал CLR -> CLR Console Application.
Автоматически вставило код:
Код:
int main(array<System::String ^> ^args)
{
...
}
Так это что, C#? Если да, то я не знал и потому тему в С++ кинул.

В любом случае, я не могу конвертировать char* в String^.
Записан
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #7 : 14-01-2010 07:11 » 

Inkognito, да с++ НО C++.NET
странная вещь
« Последнее редактирование: 14-01-2010 12:40 от Sel » Записан

Странно всё это....
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #8 : 14-01-2010 08:50 » 

Inkognito, а компилятор что пише то ?
Записан

Вад
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #9 : 14-01-2010 09:13 » 

Правильно, класс String работает с юникодными символами (о чём можно было прочитать в MSDN, кстати Ага ). Соответственно, в лучшем случае, его можно проинициализировать из wchar_t*:
Код:
wchar_t * src = L"blahblahblah";
String^ str = gcnew String(src);
или как-то так.

Но в целом, я бы не советовал использовать .NET в с++ только ради регэкспа. Уж лучше тогда boost подключить и использовать regex оттуда.
Записан
Dr.Yevhenius
Опытный

ua
Offline Offline
Пол: Мужской

« Ответ #10 : 14-01-2010 12:02 » 

Я, кстати, находил упоминание о boost. Заходил на сайт http://www.boost.org/, у вкладку Download. А там архивы от 10 до 30 и более Мб. Я подумал, что что-то не то нашел. Улыбаюсь Сейчас качаю 1.32.0.
... Попробую.
... А сколько времени потрачено зря, ужос. Улыбаюсь
Записан
Dr.Yevhenius
Опытный

ua
Offline Offline
Пол: Мужской

« Ответ #11 : 14-01-2010 12:15 » 

Пишу
Код:
#include <boost/regex.h>
Получаю
Цитата
LINK : fatal error LNK1104: cannot open file "libboost_regex-vc6-sgd-1_32.lib"

libboost_regex-vc6-sgd-1_32.lib в папке boost нет. Поискал о libboost_regex-vc6-sgd-1_32.lib на google
http://www.google.ru/search?hl=ru&source=hp&q=libboost_regex-vc6-sgd-1_32.lib&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA+%D0%B2+Google&lr=&aq=f&oq=, но, к сожалению, не смог понять.

Как примерно работать с регулярными выражениями, нашел на http://blog.alno.name/2008/10/using-boost-regex/
Там следующий код:
Цитата
#include &lt;boost/regex.hpp&gt;
Но как его понимать? Ошибка получается:
Цитата
error C2006: #include expected a filename, found '&'
Записан
darkelf
Молодой специалист

ua
Offline Offline

« Ответ #12 : 14-01-2010 12:26 » 

понимать, как:
Код:
#include <boost/regex.hpp>
как я понял из http://blog.alno.name/2008/12/using-boost-xpressive/ libboost_regex это дополнительная библиотека, возможно Вы либо не собрали её, когда собирали boost, либо, если Вы взяли уже кем-то собранный, то соответственно они её не собрали. Попробуйте Boost::Xpressive как я понимаю, она не требует дополнительных библиотек.
« Последнее редактирование: 14-01-2010 12:32 от darkelf » Записан
Dr.Yevhenius
Опытный

ua
Offline Offline
Пол: Мужской

« Ответ #13 : 14-01-2010 12:30 » 

Ошибка всё-равно осталась
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #14 : 14-01-2010 12:31 » 

Inkognito,

Цитата
Поискал о libboost_regex-vc6-sgd-1_32.lib на google
на винте поищи ) А потом пропиши путь для линкера
Записан

Вад
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #15 : 14-01-2010 12:31 » 

Цитата
&lt;
это всего лишь знаки "больше"-"меньше" ("<>") криво сверстались.

ЗЫ. Надо в пути для инклудов проекта добавить путь к бусту.
Записан
Dr.Yevhenius
Опытный

ua
Offline Offline
Пол: Мужской

« Ответ #16 : 14-01-2010 12:33 » 

на винте поищи ) А потом пропиши путь для линкера
Искал - нет там такого. И где скачивал - тоже нет.

Дополнение: в папке Boost 1.32.0 (которую я скачал) lib-файлов нет вообще.
« Последнее редактирование: 14-01-2010 12:36 от Inkognito » Записан
Вад
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #17 : 14-01-2010 12:37 » 

lib-ы там и не должно быть - её надо построить, или качать специальный инсталлер уже с бинарниками, а не основной архив буста. Это же всё в Getting Started написано должно быть.

PS. Кстати, а чего версия-то такая старая? Уже релиз 1.41 лежит
Записан
Dr.Yevhenius
Опытный

ua
Offline Offline
Пол: Мужской

« Ответ #18 : 14-01-2010 12:39 » 

Getting Started
Первый раз вижу.
Записан
Вад
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #19 : 14-01-2010 12:41 » 

http://www.boost.org/ -> на главной есть блок, и справа есть меню, "Getting Started": http://www.boost.org/doc/libs/1_41_0/more/getting_started/index.html
и там внизу - "Getting Started on Windows": http://www.boost.org/doc/libs/1_41_0/more/getting_started/windows.html (1 параграф, Get Boost)
« Последнее редактирование: 14-01-2010 12:43 от Вад » Записан
Dr.Yevhenius
Опытный

ua
Offline Offline
Пол: Мужской

« Ответ #20 : 14-01-2010 12:47 » 

Кстати, а чего версия-то такая старая? Уже релиз 1.41 лежит
Мне не нужен новый релиз, мне нужно хоть как-то с регекспами работать
Записан
Dr.Yevhenius
Опытный

ua
Offline Offline
Пол: Мужской

« Ответ #21 : 18-01-2010 05:55 » 

Надо в пути для инклудов проекта добавить путь к бусту.

Скачал инсталятор на boost 1.40.0. Записал его в C:\Program Files\boost\. Прописал полный путь: #include <C:/Program Files/boost/boost_1_40/boost/regex.h>. Но либ всё-равно не находит. В папке C:\Program Files\boost\ никаких дополнительных ехе-файлов/инсталяторов нету, собственно как и либ-файлов. Надо как-то установить буст через вижуал студио? Или как получить этот либ? Как вы проделывали эту установку?
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #22 : 18-01-2010 06:48 » 

Пропиши в проекте путь "C:\Program Files\" и используй как <boost/regex.h>

Кстати, знаешь разницу между <> и "" в #include? Зачем полный путь пишешь в <>?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Dr.Yevhenius
Опытный

ua
Offline Offline
Пол: Мужской

« Ответ #23 : 18-01-2010 07:08 » 

Кстати, знаешь разницу между <> и "" в #include? Зачем полный путь пишешь в <>?
"" - это когда файл искать в папке проекта, а <> - в папке Include.

А можно немного точнее... Прописать в Project->Settings->Resources?
« Последнее редактирование: 18-01-2010 07:10 от Inkognito » Записан
Dr.Yevhenius
Опытный

ua
Offline Offline
Пол: Мужской

« Ответ #24 : 19-01-2010 13:47 » 

Такое впечатление, вроде я попросил программу за меня на халяву написать, или никто boost'ом не польззовался. Но ладно, программу написал без использования boost и, собственно, регулярных выражений. А с такой помощью легче написать свой regex.h. Тем более, в boost, чтоб использовать, всего-лишь, регулярные выражения, нужно штук 100 h-файлов - зачем делять такую сложную структуру, пока не разобрался, но первые впечатления не очень. Улыбаюсь

P.S. В дальнейших ответах не нуждаюсь.
P.S.S. В будущем обязательно напишу решение этой проблеммы.
Записан
Вад
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #25 : 19-01-2010 14:34 » 

Просто проблема непонятна. Есть же инструкция, как всё это собрать и подключить. Ты по ней делал? На каком пункте проблема?
« Последнее редактирование: 19-01-2010 14:36 от Вад » Записан
Dr.Yevhenius
Опытный

ua
Offline Offline
Пол: Мужской

« Ответ #26 : 19-01-2010 20:09 » 

Забей...
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #27 : 19-01-2010 20:15 » 

Inkognito, зря ты так
и теперь не понятно, У тебя получилось или нет.
Может оно тебе оказалось не нужным.
Может ты посчитал это сложным.
Может...
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Dr.Yevhenius
Опытный

ua
Offline Offline
Пол: Мужской

« Ответ #28 : 19-01-2010 20:40 » 

Inkognito, зря ты так
Всё-равно у каждого свое мнение; каждый будет считать, что прав, и всё останется, как прежде. Но может это и к лучшему? Но это уже вода.

и теперь не понятно, У тебя получилось или нет.
Как я уже сказал, я бросил установку boost и реализовал программу без него.

Может оно тебе оказалось не нужным.
Нужным... Было... Задача упростилась бы раза в 1,5-2.

Может...
Всё возможно...

Может ты посчитал это сложным.
Программа, вообще, сложная, но реализуемая.

P.S. Вад, обидеть не хотел, если так получилось.
« Последнее редактирование: 19-01-2010 20:46 от Inkognito » Записан
Вад
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #29 : 19-01-2010 21:01 » 

Inkognito, всё равно не понимаю. По той ссылке, которую я тебе дал, есть вся информация.
Там описано, как сбилдить библиотеки буста. На системе с установленной VS это всего-то, запустить 1 bat-файл, а потом запустить то, что сбилдит этот файл. И подождать, пока закончит (процесс, к слову, небыстрый)
Там описан пример приложения, которое юзает буст. Включая настройки проекта, и где эти настройки в VS находятся. Там даже есть пример с использованием regex и детальное описание, как и что линковать.

"Если ничто другое не помогает - прочтите, наконец, инструкцию" (народная мудрость) Ничего личного.
« Последнее редактирование: 19-01-2010 21:07 от Вад » Записан
Страниц: [1] 2  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines