Istream operation

Ich vergleiche gerade den istream mit scanf und vermisse dabei eine Funktionalität. Beispielsweise möchte ich eine ip-adresse einlesen, mit
scanf sieht das in etwa wie folgt aus:

if ( sscanf( input,"%d.%d.%d.%d",&a,&b,&c,&d) == 4 )
{
// Eingabe korrekt eingelesen.

Der besondere Clou liegt in den „.“, die scanf korrekt mit auswertet.
Mit einem istream sieht das etwas holpriger aus:

char delim1,delim2,delim3;
int a,b,c,d;
std::istringstream iss („1.2.3.4“);
if ( !(iss >> a >> delim1 >> b >> delim2 >> c >> delim3 >> d) )
{
// und nun noch prüfen, of alle delims wirklich Punkte waren
if ( delim1==’.’ && delim2==’.’ && delim3==’.’)
// okay
}

Meiner Meinung nach müsste es etwas wie skipws geben, jedoch um beliebige Zeichen zu skippen und nicht nur Blanks.

Hat jemand eine Idee?

Gruß Markus

Hi Markus

Hab in der Standard Library Reference nichts gefunden. Wirst wohl entweder mit deiner Loesung leben muessen oder du gehst hin und erzeugst eine neue Klasse, abgeleitet von istream, welche die entsprechende Funktionalitaet enthaelt. Ich wuerde mir dazu mal die Implementation von skipws anschauen, sollte evtl. nicht so schwierig sein dies fuer beliebige Zeichen zu erweitern.

Peer