Voglio verificare se la mia stringa è valida per il percorso del file di Windows. Stavo cercando in giro e sembra che non ci sia un metodo affidabile per farlo. Ho anche controllato la libreria del filesystem, e non esiste nessuna funzione ovvia per fare questo controllo, forse qualcosa come is_valid_windows_nameIl nome del file di controllo è valido nome di windows
risposta
Si potrebbe usare la funzione _splitpath()
e analizzare l'output (in base ad esso, si potrebbe facilmente dire se il percorso è valido o no).
Vedere MSDN per ulteriori informazioni.
Si noti che questa funzione è specifica per Windows.
Non credo che ci sia un C++ standard per questo.
Si noti che l'API di Windows consente più nomi di file rispetto alla shell di Windows (i nomi di file che l'utente può utilizzare in windws explorer).
Si dovrebbe dare un'occhiata a Windows Shell API.
Un'altra possibilità è l'uso di tentativi ed errori, in questo modo sei veramente indipendente dal filesystem corrente.
Il modo più semplice è quello di non consentire
\/<> | ":? *
e si dovrebbe andare bene
e' * 'e com, lpt, aux, con –
aggiornato la mia risposta :) – codymanix
Sì, c'è una funzione di boost che fa quello che si vuole Date un'occhiata al boost :: filesystem :: windows_name (...)... Dovrai includere boost/filesystem/path.hpp e link alle librerie libboost_system e libboost_filesystem corrette (specifiche della versione e dell'architettura) poiché path non è una lib di sola intestazione.
Boost potrebbe essere un po' troppo se questo fosse il suo unico uso, ma Boost fornisce molte funzionalità C++ di nuova generazione, che lo rendono utile per lo sviluppo generale del C++. Quando usi già Boost, questa è un'ottima opzione. – sage
È un peccato anche il La più recente libreria di file system C++ 17 non ha una funzione per verificare i nomi dei file.
Si ca n utilizzare lo specifico Shell Lightweight Utility function per Windows PathFileExists
o Windows APIGetFileAttributes
e controllare l'ultimo codice di errore specifico per ERROR_INVALID_NAME
.
Penso che sia un tipo di uso improprio (perché in realtà dovrebbe esserci una funzione dedicata) ma serve allo scopo.
Non va bene se il file non esiste ancora. Inoltre, la sicurezza potrebbe impedirne l'accesso fino a un livello elevato. – CodeLurker
@CodeLurker Perché non esattamente?OP vuole solo verificare un nome/percorso del file windows valido. –
OP non dice nulla su di esso già esistente. In caso contrario, quelli non saranno di aiuto. Inoltre, potrebbe essere il caso che vogliamo controllare, anche se non abbiamo (ancora) accesso ad esso. Si noti la soluzione che ho finalmente risolto qui: https://stackoverflow.com/questions/3038351/check-whether-a-string-is-a-valid-filename-with-qt/45282192#45282192 – CodeLurker
- 1. Controllo del nome file valido. Qual è il modo migliore?
- 2. Convert DateTime.Now a un nome di file valido di Windows
- 3. Il nome del provider di appartenenza specificato non è valido. Nome del parametro: providerName
- 4. nome di attività non è un nome di classe valido
- 5. Web nome del metodo di servizio non è valido
- 6. Il nome della colonna non è valido. [Nome nodo (se presente) = t0, Nome colonna = versione]
- 7. Perché "è" un nome di dominio valido?
- 8. nome profilo non valido
- 9. Messaggio Pylint: nome costante non valido (nome non valido)
- 10. Striscia cattivo di Windows caratteri del nome file
- 11. Pythoncially controlla se il nome di una variabile è valido
- 12. Il nome del processo è sempre il nome dell'exe?
- 13. 'jquery' non è un nome di script valido. Il nome deve terminare in '.js'
- 14. Mongo lancio "Nome elemento 'nome' non è valido' eccezione
- 15. Qual è il nome del costrutto "\\? \" In windows?
- 16. Nome file di controllo di UIImage send con UIActivityViewController
- 17. Come modificare il nome del file di output del compilatore Nim e il nome
- 18. CMD di Windows Cerca ed elimina il file per nome
- 19. Trova controllo per nome dai controlli di Windows Form
- 20. Nome colonna valido Cassandra
- 21. Separatori di file del nome del percorso di ZipEntry?
- 22. nome file o nome file?
- 23. Converti tra URL e nome file di Windows (Java)?
- 24. PHP, ottenere il nome del file senza estensione di file
- 25. Controllo guadagno sul nome del file temporaneo creato in Java
- 26. Nome locale valido
- 27. Utilizzo di mysqlimport dove il nome file è diverso dal nome della tabella
- 28. Il root di contesto dell'applicazione Weblogic è il nome del file di guerra anziché il nome specificato in weblogic.xml
- 29. Come estrarre il nome del file dal nome del percorso del file?
- 30. Specificare il formato del nome del file di output TypeScript
È necessario verificare se il percorso fornito è valido o se è valido e se la struttura della directory è già impostata per il percorso o se esiste già un file? –
Buon dolore. Questo non è un duplicato poiché l'altro è codificato in C# e la risposta accettata fornisce API C#, mentre questo è codificato in C++. –
Che ne dici di provare a creare un file con quel nome su Windows e vedere se è un successo? (forse è possibile modificare il percorso un po 'per solo prova.) – cshu