更详细的介绍请参考C++ ofstream和ifstream详细用法
在c++
代码中,我们通常可以使用类似std::cout
的方法打印变量值。如果想把这些变量值存储到文件中保存起来,可以使用std::ofstream
的方法,如下:
ofstream
是从内存到硬盘,ifstream
是从硬盘到内存,其实所谓的流缓冲
就是内存空间
。
下面是推荐的用法:
std::stringstream ss;
// 指定文件路径
std::string filePath = "~/Desktop/output.txt";
std::ofstream outputFile;
// 以写入模式打开文件
outputFile.open(filePath, std::ios::app); //std::ios::app 是追加在文件尾部
if (!outputFile.is_open())
{
std::cout << "cannot find or create the file: " << filePath;
}
ss << "-------------------------- \n";
if (outputFile.is_open()) {
// 将 stringstream 的内容直接写入文件
outputFile << ss.rdbuf();
}
// 关闭文件
outputFile.close();
std::ofstream output;
// 1.打开文件。
//如果该文件不存在,需要先手动创建该文件,否则不会自己创建该文件,就不会写入成功,但是不会中断程序.
output.open("/home/user/a.txt");
// 2.向文件中写数据
for(int i=0;i<points.size();++i){
output << "point["<<i<<"]= " << points[i] << std::endl;
}
// 3.关闭文件
output.close();
使用opencv中的 cv::FileStorage()
也可以实现,既可以读取文件内容,也可以向文件中写内容:
float height = 0, weight = 0;
cv::FileStorage fs_in(file_nmae, cv::FileStorage::READ);
fs_in["person"]["height"] >> height;
fs_in["person"]["weight"] >> weight;
fs_in.release();
cv::FileStorage fs_out(file_nmae, cv::FileStorage::WRITE); // same performance for xml format
fs_out << "name" << name_;
fs_out << "x" << x_;
fs_out << "y" << y_;