Ouvrir le fichier par son chemin d'accès complet en C++
Je veux que l'utilisateur à me donner le chemin complet où le fichier existe et pas seulement le nom du fichier. Comment puis-je ouvrir le fichier de cette façon?
Est-il quelque chose comme ceci:
ifstream file;
file.open("C:/Demo.txt", ios::in);
Cela ne semble pas fonctionner.
Comment savez-vous cela ne fonctionne pas? Il ne devrait certainement faire.
Que / doit être un \
vous avez tort, il est de droite. Si vous voulez convertir de toute façon, vous devez le convertir en \\ pas \
Que / doit être un \
vous avez tort, il est de droite. Si vous voulez convertir de toute façon, vous devez le convertir en \\ pas \
OriginalL'auteur | 2009-05-09
Vous devez vous connecter pour publier un commentaire.
Normalement, on utilise le caractère barre oblique inverse comme le séparateur de chemin d'accès dans Windows. Donc:
Gardez à l'esprit que lorsqu'il est écrit en C++ code source, vous devez utiliser la double barre oblique inverse parce que le caractère barre oblique inverse lui-même signifie quelque chose de spécial à l'intérieur de chaînes entre guillemets doubles. Ci-dessus fait référence au fichier
C:\Demo.txt
.Win32 prend en charge les "\" ou "/" pour les chemins, sauf si vous êtes en contournant le chemin de canonicalisation (chemins commençant par "\\?\"). Voir msdn.microsoft.com/en-us/library/aa365247(SV.85).aspx
Neil, cela n'a rien à voir avec le compilateur. Le shell de windows traite les barres obliques de la même façon que les barres obliques inversées. Cela a été le cas depuis le début de la NT.
Le shell de windows (si par là tu veux dire cmd.exe) n'est en aucune façon en cause ici.
Il n'a même pas rien avoir à faire avec le shell, c'est le noyau (Richard a droite). J'ai bien dit "normalement" parce que vous pouvez encore rencontrer des problèmes lors de l'utilisation de barres obliques, car certains programmes interpréter les arguments en commençant par une barre oblique comme options de ligne de commande au lieu des noms de fichier. Il est exact que pour le simple fait d'ouvrir des fichiers, que ce soit en avant ou en arrière barre oblique doit être fine. Convention préfère barre oblique inverse.
OriginalL'auteur Greg Hewgill
Vous pouvez utiliser un chemin d'accès complet à la fstream classes. Le code suivant tente d'ouvrir le fichier demo.txt dans la racine du lecteur C:. Notez que, comme c'est une opération d'entrée, le fichier doit déjà exister.
Que fait ce code de produire sur votre système?
OriginalL'auteur
Le code semble de travail pour moi. Je pense la même chose avec @Iothar.
Vérifier pour voir si vous d'inclure les en-têtes, de compiler. Si il est compilé, vérifier pour voir si il y a un tel fichier, et tout et tout, noms, etc, des allumettes, et vérifiez également que vous disposez d'un droit de lire le fichier.
Pour faire une croix chèque, vérifiez si vous pouvez l'ouvrir avec fopen..
OriginalL'auteur phoad
Pour ceux qui obtiennent le chemin dynamicly... par exemple drag&drop:
Quelques constructions obtenir drag&fichiers supprimés avec des guillemets comme:
Rapide et agréable solution est d'utiliser cette fonction pour supprimer des caractères à partir de la chaîne:
myAbsolutepath
contient maintenant justeC:\MyPath\MyFile.txt
La fonction a besoin de ces bibliothèques:
<iostream>
<algorithm>
<cstring>
.Le fonctionnement repose sur cette réponse.
De Travail Violon: http://ideone.com/XOROjq
OriginalL'auteur jave.web