C++ 搜索引擎通用工具模块
本模块封装了搜索引擎项目中常用的基础功能,包括文件读取、字符串分割及中文分词处理。这些组件在项目的其他部分会被频繁调用,因此独立管理以提高复用性。
1. 文件读取工具 (FileUtil)
该类负责从指定路径读取文件内容。采用二进制输入模式打开文件,确保读取过程中不会修改原文件。函数返回布尔值标识操作是否成功,失败时输出错误信息。
class FileUtil {
public:
static bool ReadFile(const std::string &file_path, std::string *out) {
// 以二进制输入模式打开文件,ifstream 对象关联特定文件路径
std::ifstream in(file_path, std::ios::in | std::ios::binary);
if (!in.is_open()) {
std::cout << "open file " << file_path << ": error" << std::endl;
return false;
}
std::string line;
// getline 返回输入流引用,可隐式转换为 bool 类型判断读取状态
while (std::getline(in, line)) {
*out += line; // 将读取的行追加到输出字符串
}
in.close();
return true;
}
};
2. 字符串分割工具 (StringUtil)
利用 Boost 库提供的 split 函数对目标字符串进行切分。支持自定义分隔符,并可通过 token_compress_on 参数处理连续分隔符合并的情况。
class StringUtil {
public:
// target: 待切分目标,out: 结果容器,sep: 分隔符
static void Split(const std::string& target, std::vector<std::string>* out, std::string sep) {
boost::(*out, target, boost::(sep), boost::token_compress_on);
}
};


