Delete 'src/my-online-judge-master/MYOJ/comm/util.hpp'

master
pk4wt2yal 3 weeks ago
parent 388cd36ea3
commit 8593e137dd

@ -1,202 +0,0 @@
#pragma once
#include <iostream>
#include <vector>
#include <fstream>
#include <atomic>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/time.h>
#include <sys/wait.h>
#include <cstdlib>
#include <string>
#include <sstream>
#include <boost/algorithm/string.hpp>
#include <sstream>
#include "../comm/Log.hpp"
namespace ns_util
{
// 公共编译路径
const std::string defaultTempPath = "./temp/";
// 给文件名加路径和后缀
class pathUtil
{
public:
pathUtil()
{
}
~pathUtil()
{
}
// 给要文件添加后缀,路径
static std::string addSuffix(const std::string &file_name, const std::string &suffix)
{
return defaultTempPath + file_name + suffix;
}
// 程序编译时的三个临时文件
// 生成源文件
static std::string src(const std::string &file_name)
{
return addSuffix(file_name, ".cpp");
}
// 生成可执行文件
static std::string exe(const std::string &file_name)
{
return addSuffix(file_name, ".exe");
}
// 生成编译错误的完整文件名
static std::string compilerError(const std::string &file_name)
{
return addSuffix(file_name, ".compile_error");
}
// 程序运行时的三个临时文件
// 生成标准输入的完整文件名(标准输入所在路径+后缀)(这个地方函数名必须大写,否则命名冲突)
static std::string Stdin(const std::string &file_name)
{
return addSuffix(file_name, ".stdin");
}
// 生成标准输出的完整文件名(标准输出所在路径+后缀)
static std::string Stdout(const std::string &file_name)
{
return addSuffix(file_name, ".stdout");
}
// 生成标准错误的完整文件名(标准错误所在路径+后缀)
static std::string Stderr(const std::string &file_name)
{
return addSuffix(file_name, ".stderr");
}
};
// 判断文件是否存在
class fileUtil
{
public:
fileUtil()
{
}
~fileUtil()
{
}
static bool isFileExist(const std::string &file_name)
{
struct stat buffer;
return (stat(file_name.c_str(), &buffer) == 0);
}
// keep表示是否需要\n换行符
static bool readFile(const std::string &file_name, std::string *input, bool keep = false)
{
input->clear();
std::ifstream in(file_name);
if (!in.is_open())
{
return false;
}
std::string line;
while (getline(in, line))
{
*input += line;
*input += (keep ? "\n" : "");
}
in.close();
return true;
}
static bool writeFile(const std::string &file_name, const std::string &output)
{
std::ofstream out(file_name);
if (!out.is_open())
{
return false;
}
out.write(output.c_str(), output.size());
out.close();
return true;
}
};
class TimeUtil
{
public:
// 获取时间戳(秒级)
static std::string GetTimeStamp()
{
struct timeval _time;
gettimeofday(&_time, nullptr);
return std::to_string(_time.tv_sec); // 累积到现在的秒数
}
// 获取时间戳(毫秒级)
static std::string GetTimeMs()
{
struct timeval _time;
gettimeofday(&_time, nullptr);
return std::to_string(_time.tv_sec * 1000 + _time.tv_usec / 1000);
}
};
// 生成唯一的文件名
class nameUtil
{
public:
nameUtil()
{
}
~nameUtil()
{
}
static std::string getUniqueName()
{
static std::atomic_uint id(0); // atomic是C++提供的原子性计数器
id++;
std::string ms = TimeUtil::GetTimeMs();
std::string uniq_id = to_string(id);
return ms + "-" + uniq_id;
// // 获取当前时间戳
// auto now = std::chrono::system_clock::now();
// auto millis = std::chrono::duration_cast<std::chrono::milliseconds>(now.time_since_epoch()).count();
// // 使用随机数生成器
// std::random_device rd; // 非确定性随机数生成器
// std::mt19937 gen(rd()); // 使用Mersenne Twister算法的伪随机数生成器
// std::uniform_int_distribution<> dis(1000, 9999);
// // 生成唯一的文件名
// std::stringstream ss;
// ss << millis;
// ss << "_";
// ss << dis(gen); // 添加一个随机数来进一步确保唯一性
// return ss.str();
}
};
// 切分字符串工具
class splitUtil
{
public:
splitUtil()
{
}
~splitUtil()
{
}
static void splitString(const std::string& src, const std::string& sep, std::vector<std::string>* tokens)
{
tokens->clear();
boost::split(*tokens, src, boost::is_any_of(sep), boost::algorithm::token_compress_on);
}
};
}
Loading…
Cancel
Save