2017-06-23 4 views
-1

Je travaille sur un projet Windows 10 Universal C++ et j'essaye d'ouvrir un fichier binaire en mode lecture en utilisant std::ifstream.std :: ifstream :: open() échoue dans Windows 10 Universal apps

Ceci est mon code:

std::ifstream imgFile("C:\\Users\\GuiTeK\\Desktop\\picture.bmp", std::ios::binary); 

if (imgFile.is_open()) 
{ 
    std::cout << "OK" << std::endl; 
} 

else 
{ 
    int error = errno; 
    std::cerr << "KO: " << error << std::endl; 
} 

Le problème est qu'il ne garde avec erreur 13, ce qui signifie "Les données sont invalides" (CF. System Error Codes).

Toutefois, le même code exact fonctionne correctement dans un projet Win32 Console Application C++.

Qu'est-ce qui ne va pas?

+1

Quelles sont les autorisations demandées par le manifeste de votre application? –

Répondre

2

Les applications UWP ne sont pas autorisées à accéder à tous les fichiers sur le périphérique. Par défaut, les applications peuvent accéder à certains emplacements de système de fichiers, tels que le répertoire d'installation de l'application ou les emplacements de données d'application. Pour plus d'informations, veuillez consulter le .

"C:\Users\GuiTeK\Desktop\picture.bmp" est un emplacement auquel vous ne pouvez pas accéder directement. En UWP, nous aurons besoin d'un File​Open​Picker pour accéder à un tel fichier. Une règle importante ici est que Skip the path: stick to the StorageFile.

Pour plus d'informations sur la gestion des fichiers dans UWP, veuillez consulter Files, folders, and libraries et également File access sample, File picker sample sur GitHub.