Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

wyciąganie adresu ip z ciągu znaków

Ostatnio zmodyfikowano 2019-10-15 11:16
Autor Wiadomość
bob_cc
Temat założony przez niniejszego użytkownika
wyciąganie adresu ip z ciągu znaków
» 2019-10-15 01:45:33
mam taki kawałek kodu:

if (String(packetBuffer) == "ola") {


k1=192;
k2=168;
k3=3;
k4=103;
  }

po wpisaniu 'ola' przypisują mi się wartości liczbowe do poszczególnych k1,k2,k3,k4. Jednak zależy mi na tym aby wprowadzić dane w postaci np: [192,168,3,75] i teraz odpowiednia funkcja rozpozna ciąg zaczynający się od "[" i zacznie do poszczególnych k przypisywać odpowiednie cyfry tak aby uzyskać takie przypisanie do moich k:


k1=192;
k2=168;
k3=3;
k4=75;


chodzi o to aby z takiego ciągu [192,168,3,75] wykorzystując jako pierwszy nawias  później "," móc dowolny adres ip rozdzelić na  moje zmienne k czyli jak wpiszę [10,2,102,103] to programik przypisze mi takie k

k1=10;
k2=2;
k3=102;
k4=103;

i dodatkowo aby tak zmodyfikować zapis if (String(packetBuffer) == "103") aby rozpoznał że pojawiło się wyrażenie w "[]" i że musi z tych nawiasów wyszukać dane IP.
Tzn jak wpisze zamiast "ola" 1000 to wprowadzi cyfrę 1000 ale jak wpiszę ip w [] to wyciągnie mi poszczególne wartości z których składa się IP.
oznacza to że jak zapiszę coś w [] to odczyta zawartość nawiasów ale jak wpiszę dowolną liczbę to wpisze mi tę liczbę.(coś jak like ale nie wim jak to wykonać)
P-175372
TemplateEntity
» 2019-10-15 11:16:15
Jeżeli programujesz w C++ to możesz użyć poniższego kodu.

C/C++
#include <iostream>
#include <vector>
#include <regex>

using namespace std;

vector < int > resolveIP( const string & ip )
{
    vector < int > numbers;
    string token { };
   
    for_each( ip.begin(), ip.end(),[ & ]( char sign )
    {
        if( sign != '[' && sign != ']' )
        {
            if( sign != ',' ) { token += sign; }
            else { numbers.push_back( stoi( token ) ); token.clear(); }
        }
    }
    );
   
    numbers.push_back( stoi( token ) );
   
    return numbers;
}

int main()
{
    for( const auto & number: resolveIP( "[543,523,443,21]" ) ) cout << number << " ";
   
    return 0;
}
P-175373
« 1 »
  Strona 1 z 1