Nicht ganz. Ein Stringstream ist eigentlich das gleiche wie ein Filestream, nur dass du nicht mit Dateien als Datenquelle bzw. -ziel arbeitest, sondern mit Strings. Ein ostringstream ist also wie ein ofstream, nur dass du nicht in eine Datei schreibst, sondern in einen String.
Richtig.
Die str-Methode des Stringstreams liefert sozusagen das Ergebnis aller Einfügeoperationen, den fertigen String. In diesem Fall ist das eine Stringdarstellung der int-Variablen zaehler, die wir vorher reingesteckt haben.
Der String wiederum hat eine Methode namens find, die es ermöglicht, im String nach etwas zu suchen. In diesem Fall suchen wir nach der eingegebenen Zahl. find liefert die erste Position, an der der gesuchte String gefunden wurde, oder eben string::npos, wenn nichts gefunden wurde.
Klar geht das.
#include <string>
#include <sstream>
#include <iomanip>
#include<iostream>
using namespace std;
int main()
{
string eingabe;
cout<<"Zahl: ";
cin>>eingabe;
for(int zaehler=1; zaehler <= 1000; ++zaehler)
{
cout << setw( 6 );
ostringstream ss;
ss << zaehler;
string s = ss.str();
while( true )
{
int findpos = s.find( eingabe );
if( findpos == string::npos )
{
break;
}
s.replace( findpos, 1, "*" );
}
cout << s << '\n';
}
}[/code]Man holt den String aus dem Stringstream (mit str()), und sucht dann in einer Schleife nach der eingegebenen Zahl und ersetzt sie durch ein Sternchen. Man könnte das auch mit transform oder for_each oder einem benutzerdefinierten Manipulator machen, aber so ist es wohl am verständlichsten.