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中写入文件吗?
答案 0 :(得分:7)
fstream
&co.。在Linux上可以很好地工作。代码的问题是您使用的是~
,它不是C ++ fstream
和一般较低级别的系统调用所识别的“真实”路径,但是通常可以从命令行使用当它被外壳展开时。
如果您希望程序执行类似Shell的路径扩展,则可以调用wordexp
函数;请注意,在使用Linux的许多年中,我认为我并不需要它,因为路径通常是“从外部”作为命令参数而已由Shell扩展的(这是一般的假设,请不要打破。避免双重扩展; wordexp
在扩展路径(例如在配置文件中)时具有典型用法。