[C/C++] IP+Port in String aufteilen

posi90

Erfahrenes Mitglied
Hallo,

Ich möchte folgenden String in IP und Port aufteilen:

Code:
string saddress="127.0.0.1:80";
char address[]="127.0.0.1:80";

unsigned int port=0;     //Hier soll dann 80 drin stehn
unsigned long ul_ip=0;    //Hier kann man inet_addr(address); verwenden wenn :80 nicht dabeisteht
string ip;                     //reicht auch wenn hier "127.0.0.1 drin steht, da man ja inet_addr() verwenden kann"

Gibt es eine fertige Funktion, die eine solche Aktion durchführen kann?

mfg. Poseidon
 
Zuletzt bearbeitet:
Hallo,

ich würde es wie folgt machen:

C++:
#include <stringstream>


short i = 0;
string ip="", sport="";
while(saddress[i] != ':') 
{
     ip += saddress[i];
     ++i;
}
++i;
while(saddress[i] != '\0')
{
    sport += saddress[i];
    ++i;
}
stringstream ss;
ss << sport;
ss >> port;

Ist allerdings nicht getestet..
 
Hi,

andere Möglichkeit:

Den String in ein char* kopieren, den Doppelpunkt mit strchr suchen und mit einem \0 ersetzen. Die gefundene Position + 1 ist dann der Port als String, das andere ist nur die IP als String.

Gruß
BK
 
Hi.


C:
char address[]="127.0.0.1:80";
    int port, pos;
    if (sscanf(address, "%*[^:]%n:%d", &pos, &port) == 1) {
        address[pos] = '\0';
        printf("host: %s\nport: %d\n", address, port);
    }
Gruß
 
Zurück