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