Étant donné une chaîne "nom de fichier.conf", comment puis-je vérifier l'extension de la partie?
J'ai besoin d'une plate-forme de solution.
Étant donné une chaîne "nom de fichier.conf", comment puis-je vérifier l'extension de la partie?
J'ai besoin d'une plate-forme de solution.
La meilleure façon de ne pas écrire du code qui le fait, mais d'appeler les méthodes existantes. Dans windows, la PathFindExtension méthode est probablement la plus simple.
Alors pourquoi ne pas écrire votre propre?
Bien, prenez la strrchr exemple, ce qui se passe lorsque vous utilisez cette méthode sur la chaîne suivante "c:\program files\AppleGate.Net\readme"? Est ".Net\readme" de l'extension? Il est facile d'écrire quelque chose qui fonctionne pour quelques exemple des cas, mais peut être beaucoup plus difficile d'écrire quelque chose qui fonctionne pour tous les cas.
En supposant que vous avez accès à la STL:
std::string filename("filename.conf");
std::string::size_type idx;
idx = filename.rfind('.');
if(idx != std::string::npos)
{
std::string extension = filename.substr(idx+1);
}
else
{
// No extension found
}
Edit: C'est une plate-forme de solution, puisque vous n'avez pas parler de la plate-forme. Si vous êtes particulièrement sur Windows, vous aurez envie de tirer parti de la Windows des fonctions spécifiques mentionné par d'autres, dans le fil.
Quelqu'un d'autre a mentionné boost, mais je voulais juste ajouter le code actuel pour ce faire:
#include <boost/filesystem.hpp>
using std::string;
string texture = foo->GetTextureFilename();
string file_extension = boost::filesystem::extension(texture);
cout << "attempting load texture named " << texture
<< " whose extensions seems to be "
<< file_extension << endl;
// Use JPEG or PNG loader function, or report invalid extension
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.