wyciąganie adresu ip z ciągu znaków
Ostatnio zmodyfikowano 2019-10-15 11:16
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ć) |
|
TemplateEntity |
» 2019-10-15 11:16:15 Jeżeli programujesz w C++ to możesz użyć poniższego kodu. #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; }
|
|
« 1 » |