实际代码
一开始是通过读取.csv文件完成初始化配置,结果因为数据结构复杂,加载逻辑和读取文件逻辑混在一起越来越乱,后来师傅重构的时候,教了回调函数的用法。很简洁得将回调函数的使用和实现区分出来
#include<iostream>
#include <functional>
#include<vector>
#include<queue>
#include<fstream>
//声明函数数据结构
typedef std::function<void(std::vector<std::string> infoTemp)> TestFunction;
//IO逻辑
void testCallBack(TestFunction f) {
std::ifstream testInputStream("data/test.csv");
if (!testInputStream) {
std::cout << "cannot open the file\n";
return;
}
std::vector<char> buffer(1024, 0);
std::vector<std::string> infoTemp;
while (testInputStream) {
memset(buffer.data(), 0, sizeof(buffer));
infoTemp.clear();
testInputStream.getline(buffer.data(), sizeof(buffer));
int pos = -1;
std::string line(buffer.data());
while ((pos = line.find_first_of(",")) != std::string::npos) {
infoTemp.push_back(line.substr(0, pos));