为什么fstream无法在Linux中写入文件?

时间:2018-12-17 23:41:08

标签: c++ linux api fstream ofstream

fstream不适用于使用以下代码在Linux中写入文件:

#include <iostream>                     //for console input and output
#include <fstream>                      //for file input and output

int main(int argc, char **argv) {
    std::ofstream outFile("~/test_ws/src/data_logger/src/myFile.txt", std::ios::out | std::ios::binary);
    outFile.open("~/test_ws/src/data_logger/src/myFile.txt", std::ios::out | std::ios::binary);
    if(outFile.is_open()) {
        outFile << "Writing whether you like it or not.\n";
        std::cout << "YES!\n";
    } else std::cout << "Nope!\n";
    outFile.close();
}

出什么问题了?另外,还有其他C ++ API可用于在Linux中写入文件吗?

1 个答案:

答案 0 :(得分:7)

fstream&co.。在Linux上可以很好地工作。代码的问题是您使用的是~,它不是C ++ fstream和一般较低级别的系统调用所识别的“真实”路径,但是通常可以从命令行使用当它被外壳展开时。

如果您希望程序执行类似Shell的路径扩展,则可以调用wordexp函数;请注意,在使用Linux的许多年中,我认为我并不需要它,因为路径通常是“从外部”作为命令参数而已由Shell扩展的(这是一般的假设,请不要打破。避免双重扩展; wordexp在扩展路径(例如在配置文件中)时具有典型用法。