Impossible d'ouvrir fstream lorsque vous spécifiez un chemin d'accès absolu
Je sais que c'est plutôt risible, mais je n'arrive pas à obtenir de simples C++ ofstream code du travail. Pouvez-vous s'il vous plaît dites-moi ce que pourrait être mal avec le code suivant:
#include <fstream>
...
ofstream File("C:\temp.txt");
if(File)
File << "lolwtf";
L'ouverture de la ofstream échoue à chaque fois que je spécifier un chemin d'accès absolu. Les chemins d'accès relatifs semble fonctionner sans problèmes. Je suis vraiment pas certain que la question est ici.
Oh, apparemment, 'C:\' est pas acceptée comme un chemin d'accès valide. C'est plutôt malheureux, que je suis en train d'écrire à un chemin d'accès spécifié par la variable d'environnement TEMP. Toutes les suggestions?
C'est dans
Des excuses. Le principal problème est qu'il refuse d'ouvrir le fichier quand je spécifier un chemin absolu, avec une lettre de lecteur. Original question sera mise à jour sous peu.
Comme d'autres l'ont souligné, le problème est de s'échapper de la barre oblique inverse. Mais devriez-vous être de faire une supposition quant à l'endroit où la variable d'environnement TEMP points? Il serait plus sûr d'utiliser des API Win32 GetTempPath() ou GetTempFileName()?
BTW, ce problème est couvert par le C++ FAQ Lite parashift.com/c++-faq-lite/d'entrée-sortie.html#faq-15.16 je vous encourage à lire l'intégralité de la FAQ, vous apprendrez beaucoup.
C'est dans
std::
, si c'est ce que tu veux dire. Vous devez laissez-nous savoir ce que vous entendez par "ça ne marche pas". Les erreurs de compilation? Les erreurs d'exécution? Mauvaise sortie?Des excuses. Le principal problème est qu'il refuse d'ouvrir le fichier quand je spécifier un chemin absolu, avec une lettre de lecteur. Original question sera mise à jour sous peu.
Comme d'autres l'ont souligné, le problème est de s'échapper de la barre oblique inverse. Mais devriez-vous être de faire une supposition quant à l'endroit où la variable d'environnement TEMP points? Il serait plus sûr d'utiliser des API Win32 GetTempPath() ou GetTempFileName()?
BTW, ce problème est couvert par le C++ FAQ Lite parashift.com/c++-faq-lite/d'entrée-sortie.html#faq-15.16 je vous encourage à lire l'intégralité de la FAQ, vous apprendrez beaucoup.
OriginalL'auteur ModeEngage | 2009-10-31
Vous devez vous connecter pour publier un commentaire.
Votre chemin n'est pas valide:
La
\
est de s'échapper de la "t" comme un caractère de tabulation horizontale, de sorte que la valeur du chemin se termine comme:Ce que vous voulez, c'est:
ou
C'est la question. J'ai essayé d'obtenir la variable d'environnement Windows CHEMIN d'accès, qui était de revenir avec des non-échappé des barres obliques. Merci!
OriginalL'auteur James McNellis
Le problème est dans votre chaîne, vous n'échappent pas à la barre oblique inverse.
Ahh, ok, merci. J'aurais fait en sorte de que avant que j'ai posté.
OriginalL'auteur Ed S.
Même si Windows les gens semblent préférer la non-standard de caractère '\' comme séparateur de chemin, le standard '/' fonctionne parfaitement et évite les problèmes gênants comme ça.
Donc, mon conseil est de s'en tenir à des barres obliques...
Nom d'une plate-forme d'usage courant aujourd'hui, où les '/' n'est pas valide séparateur de chemin. VMS peut-être?
OriginalL'auteur alex tingle