Ungültige zeichen für Dateinamen aus einem string entfernen
-
Hi,
Ich möchte gerne aus einem string alle ungültigen zeichen entfernen und dann damit eine datei abspeichern. das hab ich im moment so gemacht:
while (Filename.find('\\')!=string::npos) { Filename.erase(Filename.find('\\'),1); } while (Filename.find(':')!=string::npos) { Filename.erase(Filename.find(':'),1); } // usw für alle anderen zeichen)
Es funktioniert zwar bestens, aber das ist bei 9 Zeichen ne menge code!
In Delphi kenn ich ne möglich keit:
Man macht ein "Set of Char" und speichert darin dann alle ungültigen zeichen und dann überprüft man einfach alle zeichen nacheinander ob das zeichen im "Set of Char" vorkommt und löscht es dann einfach.Gibt es sowas wie "Set of Char" nicht auch in C++?
gruß
MaN
-
Einen 'SetOfChar' gibts natürlich auch. Man nennt es char-Array:
static char invchars[] = "\\:"; for( int i=0; i<sizeof(invchars)/sizeof(char); i++ ) { // Position zwischenspeichern, dann muss man nicht zweimal suchen ;-) string::size_type invpos; while( (invpos=Filename.find( invchars[i] )) != string::npos ) Filename.erase(invpos,1); }
-
for( int i=0; i<sizeof(invchars)/sizeof(char); i++ )
... witzkeks
sizeof( char ) /* laut stan****d immer 1 */
Invalid characters:
ASCII 0 - 31, <, >, :, ", /, \, |Reserved words:
"CON", "PRN", "AUX", "CLOCK$", "NUL", "COM1", "COM2", "COM3", "COM4", "COM5", "COM6", "COM7", "COM8", "COM9", "LPT1", "LPT2", "LPT3", "LPT4", "LPT5", "LPT6", "LPT7", "LPT8", "LPT9".
Also, reserved words followed by an extension—for example, NUL.tx7—are invalid file names.just to mention...
Greetz, Swordfish
-
schade das es sowas nicht gibt...
dann mach ichs halt mit 2 verschachtelten For-Schleifen
Wenn jemand eine bessere idee hat,soll er sich bitte melden
danke!
Gibts eigentlich in VSC eigentlich nen Hotkey um ganze Makierte Codeblöcke nach links verschoben werden können?
-
so hab ichs jetzt gemacht:
char invalidChars[10]="\\:/\"<>?*|"; for (int i=Filename.length();i>=0;i--) { for (int j=0;j<=9;j++) { if (Filename[i]==invalidChars[j]) { Filename.erase(i,1); } } }
-
MaN0258 schrieb:
Gibts eigentlich in VSC eigentlich nen Hotkey um ganze Makierte Codeblöcke nach links verschoben werden können?
TAB
-
mit [Umschalt] + [Tab] kann man den Code 'ausrücken' also nach link verschieben...mal so am Rande
MfG CodeFinder
-
Vielen Dank!! das hat mir noch gefehlt um komfortabel zu coden