Deklarieren Sie eine Zeichenfolge, die die ungültigen Zeichen enthält: "\\/:?"<>|"
. Alles, was Sie tun müssen, ist zu prüfen, ob sich der Char im Array befindet. Verwenden Sie dazu eine native Funktion oder schreiben Sie eine Methode, CharInString(char* needle, string* haystack)
die den Inhalt des bereitgestellten Heuhaufens durchläuft, um zu prüfen, ob sich die Nadel darin befindet.
Ihre Schleife sollte so aussehen:
string illegalChars = "\\/:?\"<>|"
for (it = s->begin() ; it < s->end() ; ++it){
bool found = illegalChars.find(*it) != string::npos;
if(found){
*it = ' ';
}
}
Es ist wartungsfreundlicher und lesbarer. Sie können feststellen, ob Sie ein Zeichen ganz leicht dupliziert haben, und da Sie es mit jeder beliebigen Zielzeichenfolge und beliebiger Zeichenfolge illegaler Zeichen, die Sie gerade für sich selbst erstellt haben, eine generische RemoveIllegalChars(string* targetString, string* illegalChars)
Methode erstellen können, die an einer beliebigen Stelle in Ihrem Programm verwendet werden kann.
Ich benutze diese Zeiger möglicherweise falsch. Mein C ++ fu ist schwach ... vorerst.