Мне нужно написать программу для сканирования текстового файла и получения всех IP-адресов (формата 256.256.256.256) в файле.
Код C ++ для поиска всех IP-адресов в файле
comment
Кстати, 256 - недопустимый октет.
- person paxdiablo   schedule 06.02.2009
comment
Спасибо всем за ваш вклад. Это регулярное выражение ... Также, если вы планируете использовать Perl, догадка сделает это намного проще.
- person   schedule 08.02.2009
Ответы (4)
Вы можете написать BNF, используя Boost :: spirit или создайте регулярное выражение для поиска IP-адресов с помощью Boost :: regex
person
paxos1977
schedule
06.02.2009
Может, стоит попробовать использовать регулярные выражения? Вы можете прочитать файл, возможно, отсканировав его построчно, а затем использовать регулярное выражение в строке для извлечения IP-адресов.
Если файл содержит только IP-адреса и никакой другой текст, возможно, будет проще использовать scanf с "%hhu.%hhu.%hhu.%hhu" в качестве строки формата.
person
dreamlax
schedule
06.02.2009
Это регулярное выражение поможет:
\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b
Измените этот код под свои нужды:
using namespace System::Text::RegularExpressions;
void doTheMatch( String^ inputString, String^ filter )
{
Console::WriteLine( "original string: {0}", inputString );
Console::WriteLine( "attempt to match: {0}", filter );
Regex^ regex = gcnew Regex( filter );
Match^ match = regex->Match( inputString );
if ( ! match->Success )
{
Console::WriteLine(
"Sorry, no match of {0} in {1}", filter, inputString );
return;
}
for ( ; match->Success; match = match->NextMatch() )
{
Console.WriteLine(
"The characters {0} match beginning at position {1}",
match->ToString(), match->Index );
}
}
person
Chris Ballance
schedule
06.02.2009
Откуда взялось System :: Text :: RegularExpressions?
- person ypnos; 06.02.2009
Разве это не вопрос о C ++, а не о C # ?? В конце концов, я мог бы дать ответ и на Perl ...
- person siukurnin; 06.02.2009
Я думаю, что это управляется C ++, а не C #. В любом случае трудно понять, чего хотел автор. Хотя, похоже, это должно помочь.
- person Sean; 06.02.2009
Я предполагал, что это управляемый C ++, поскольку он не был указан
- person Chris Ballance; 06.02.2009
Неужели это должен быть C ++? Регулярные выражения и grep ваши друзья!
person
kquinn
schedule
06.02.2009
Возможно, он хочет подключиться к IP-адресам, которые он читает.
- person dreamlax; 06.02.2009