Comment faire pour vérifier si le fichier existe en C++ dans un portable?

Actuellement, je utiliser ce code pour vérifier si le fichier existe sur Windows et POSIX-compatible avec des Systèmes d'exploitation (Linux, Android, MacOS, iOS, BlackBerry 10):

bool FileExist( const std::string& Name )
{
#ifdef OS_WINDOWS
    struct _stat buf;
    int Result = _stat( Name.c_str(), &buf );
#else
    struct stat buf;
    int Result = stat( Name.c_str(), &buf );
#endif
    return Result == 0;
}

Questions:

  1. Fait ce code avez des pièges? (peut-être un OS où il ne peut pas être compilé)
  2. Est-il possible de le faire dans un véritable mobiles à l'aide de C/C++ de la bibliothèque standard?
  3. Comment l'améliorer? Recherche pour l'exemple canonique.
Quel est le but de vérifier s'il existe, par exemple, allez-vous ouvrir le fichier s'il existe, ou imprimer un message d'erreur ou quelque chose d'autre?
Il devrait fonctionner correctement. Précisément je voudrais vérifier pour Windows et POSIX avec la valeur par défaut étant quelque chose de POSIX. Vous devriez probablement vous avez un projet spécifique OS définir en tant que bien, comme ces noms eux-mêmes peuvent changer d'un système à l'autre.
l'ouverture d'un fichier est une mauvaise idée - il peut exister, mais ouvert par un autre processus, dans un partage.
J'ai utilisé un accès pour tester l'existence. Je n'ai aucune idée si c'est mieux. En fait, je pense qu'il est plus facile comme vous l'avez fait. Exemple: si (l'accès("fichier", F_OK) == 0) ... Il peut être fait sur windows et linux.
il ressemble à un potentiel fosse de l'automne. Pourriez-vous résumer ça comme réponse?

OriginalL'auteur Sergey K. | 2013-08-19