指定绝对路径时无法打开fstream

Mod*_*age 3 c++ fstream

我知道这是相当可笑的,但我似乎无法让简单的C++ ofstream代码工作.你能否告诉我以下代码可能出现的问题:

    #include <fstream>

    ...

    ofstream File("C:\temp.txt");

    if(File)
       File << "lolwtf";
Run Code Online (Sandbox Code Playgroud)

每当我指定绝对路径时,打开ofstream都会失败.相对路径似乎没有问题.我真的不确定这里的问题是什么.

Jam*_*lis 25

您的路径无效:

"C:\temp.txt"
Run Code Online (Sandbox Code Playgroud)

\"t"转义为水平制表符,因此路径值最终为:

"C:    emp.txt"
Run Code Online (Sandbox Code Playgroud)

你想要的是:

"C:\\temp.txt"
Run Code Online (Sandbox Code Playgroud)

要么

"C:/temp.txt"
Run Code Online (Sandbox Code Playgroud)


Ed *_* S. 8

问题在于你的字符串,你没有逃避反斜杠.

 ofstream File("C:\\temp.txt");
Run Code Online (Sandbox Code Playgroud)

  • @Ed:File不是指针,但是从basic_ios派生的流对象有一个操作符void*(),如果fail()返回true,则返回空指针,否则返回一些非空指针.这就是'if(File)'的工作原理.(但你不得不逃避反斜杠.) (3认同)

ale*_*gle 6

尽管Windows人员似乎更喜欢非标准'\'字符作为路径分隔符,但标准'/'可以完美地工作并避免像这样的恼人问题.

所以,我的建议是坚持前进斜线......

std::ofstream File("C:/temp.txt");
Run Code Online (Sandbox Code Playgroud)

  • 为今天常用的平台命名,其中'/'不是有效的路径分隔符.VMS可能吗? (2认同)