2009-02-06 7 views
0

Je dois écrire un programme pour analyser un fichier texte et récupérer toutes les adresses IP (au format 256.256.256.256) dans le fichier.Code C++ pour trouver toutes les adresses IP dans un fichier

+0

256 n'est pas un octet valide, par la manière. – paxdiablo

+0

Merci à tous pour vos contributions. Expression régulière c'est .. Prévoyant aussi d'utiliser perl, devinez le rendra beaucoup plus simple. –

Répondre

2

Peut-être que vous devriez essayer d'utiliser des expressions régulières? Vous pouvez lire le fichier, en l'analysant ligne par ligne, puis utiliser une expression régulière sur la ligne pour extraire les adresses IP.

Si le fichier contient uniquement des adresses IP et aucun autre texte, il peut être plus facile d'utiliser scanf, avec "%hhu.%hhu.%hhu.%hhu" comme chaîne de format.

0

Est-ce que ça doit vraiment être C++? Les expressions régulières et grep sont vos amis!

+0

Peut-être veut-il établir des connexions avec les adresses IP qu'il lit. – dreamlax

1

Cette expression régulière fera l'affaire:

\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 

Modifier ce code pour vos besoins spécifiques:

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); 
    } 
} 
+0

D'où provient System :: Text :: RegularExpressions? – ypnos

+0

Cela fait partie du CLR –

+0

N'est-ce pas une question à propos de C++ non C# ?? Je pourrais contribuer une réponse en Perl aussi après tout ... – siukurnin

Questions connexes