为什么 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
在扩展路径时有其典型用法,例如在配置文件中)。
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
在扩展路径时有其典型用法,例如在配置文件中)。