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

Why is fstream not working for writing files in Linux?

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 中写入文件?

fstream & 公司。在 Linux 上工作得很好。您的代码的问题是您使用的是 ~,它不是 C++ fstream 识别的 "real" 路径和一般较低级别的系统调用,但它通常从由 shell.

扩展的命令行

如果你想让你的程序进行类似shell的路径扩展,你可以调用wordexp函数;请注意,在 Linux 多年的工作中,我认为我从来不需要它,因为通常路径 "from the outside" 作为命令参数,已经被 shell 扩展(这就是一般假设,不要打破以避免双重扩展;wordexp 在扩展路径时有其典型用法,例如在配置文件中)。