You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
|
|
// io_utils.h - 通用 IO 工具:时间/目录/日志清理/GBK转码/文件保存
|
|
|
|
|
|
#ifndef IO_UTILS_H
|
|
|
|
|
|
#define IO_UTILS_H
|
|
|
|
|
|
|
|
|
|
|
|
#include <string>
|
|
|
|
|
|
#include <vector>
|
|
|
|
|
|
#include <cstdint>
|
|
|
|
|
|
|
|
|
|
|
|
// 去除字符串首尾空白(空格/tab/回车/换行)
|
|
|
|
|
|
std::string trim_str(const std::string& s);
|
|
|
|
|
|
|
|
|
|
|
|
// GBK(ANSI) → UTF-8(日志文件按UTF-8写入,避免编辑器乱码)
|
|
|
|
|
|
std::string gbk_to_utf8(const std::string& s);
|
|
|
|
|
|
|
|
|
|
|
|
// 递归创建目录(支持 "a/b/c",已存在则返回 true)
|
|
|
|
|
|
bool make_dirs(const std::string& path);
|
|
|
|
|
|
|
|
|
|
|
|
// 创建本次任务输出目录并返回完整路径: data/日期/时间_taskId
|
|
|
|
|
|
// taskId 为空时返回 data/日期/时间_ (调用方需自行创建 data 根目录)
|
|
|
|
|
|
std::string make_task_dir(const std::string& task_id);
|
|
|
|
|
|
|
|
|
|
|
|
// 按配置 Log_Retain_Days 清理 data/日期 下的过期日期目录(保留最近 N 天)
|
|
|
|
|
|
// 在程序启动与每日 01:00 调用
|
|
|
|
|
|
void clean_expired_log_dirs();
|
|
|
|
|
|
|
|
|
|
|
|
// 保存 ASCII PCD 点云(一次性构建字符串写入,避免逐行IO)
|
|
|
|
|
|
void save_pcd_ascii(const std::string& filename,
|
|
|
|
|
|
const std::vector<double>& xs,
|
|
|
|
|
|
const std::vector<double>& ys,
|
|
|
|
|
|
const std::vector<double>& zs);
|
|
|
|
|
|
|
|
|
|
|
|
// 保存灰度 JPG(灰度转RGB后压缩为JPEG,quality=90)
|
|
|
|
|
|
bool save_jpg_gray(const std::string& filename, int width, int height,
|
|
|
|
|
|
const std::vector<uint8_t>& pixels, int quality = 90);
|
|
|
|
|
|
|
|
|
|
|
|
#endif // IO_UTILS_H
|