Dies ist mein Eingabestring: Muhammad Ali 65445519 76 butterfly123C++: String Formatierung
Dies ist meine gewünschte Ausgabe: Muhammad Ali xxx-xx-xxx 76 xxxxxxxxx
Hinweis: Anders als die Sozialversicherungsnummer (65445519) alles kann in der Länge variieren, dh Name, UserID (76) und Passoword (Butterfly123).
Beispiel:
Kobe Bryant 34567890 548 56mamba
Ich habe es gegeben einen Versuch, aber ich habe eine feste Benutzer-ID der Länge 2. Kann jemand mit einer Lösung kommen, in dem die Benutzer-ID kann auch variieren? oder ein ganz neuer Ansatz? Ich möchte keine String-Streams verwenden, in denen Sie die Eingabe nacheinander übernehmen und dann die Zeichenfolge verarbeiten. Jedoch wird eine effektive und kurze String-Stream-Lösung geschätzt werden. Vielen Dank.
string s;
int j;
getline(cin,s);
for (int i=0; i<s.length(); i++)
{
if(s.at(i)=='0' || s.at(i)=='1' || s.at(i)=='2'
|| s.at(i)=='3' || s.at(i)=='4' || s.at(i)=='5'
|| s.at(i)=='6' || s.at(i)=='7' || s.at(i)=='8'
|| s.at(i)=='9')
{
s.replace(i,8,"xxxxxxxx");
s.insert(i+3,"-");
s.insert(i+6,"-");
j=i+14;
break;
}
}
for(j;j<s.length();j++)
{
s.replace(j,1,"x");
}
cout<<s<<endl;
Warum nicht 'cctype' und' isdigit ((unsigned char) s.at (i)) 'anstelle der langen Bedingung in' if' verwenden? – MikeCAT
@MikeCAT Danke Mann, benutzt es. – Mohsin