std::string和ctime之间的转换

本文介绍了一种使用C++从字符串中解析日期和时间的方法,通过sscanf函数读取特定格式的日期时间字符串,并将其转换为整数型变量,以便进行后续的日期时间操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

int year, month, day, hour, minute, second;

string strTime;

sscanf(strTime.c_str(), "%d-%d-%d %d:%d:%d", &year, &month, &day, &hour, &minute, &second);
CTime CTDCFSJ(year, month, day, hour, minute, second);

转载于:https://www.cnblogs.com/132818Creator/p/11249382.html

// CodeDynamicUpdate.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <windows.h> #include <iostream> #include <string> #include <vector> #include <map> #include <fstream> #include <sstream> #include <random> #include <algorithm> #include <regex> #include <ctime> class CodeObfuscator { private: std::vector<std::string> originalNames; std::vector<std::string> obfuscatedNames; std::map<std::string, std::string> nameMapping; std::random_device rd; std::mt19937 gen; public: CodeObfuscator() : gen(rd()) { initializeNameMappings(); } void initializeNameMappings() { // 原始函数名变量名 originalNames = { "main", "execute", "process", "handle", "init", "setup", "config", "data", "result", "status", "flag", "count", "index", "value", "buffer", "path", "name", "type", "size", "length", "time", "user", "system", "file", "dir", "key", "value", "param" }; // 生成混淆后的名称 for (const auto& name : originalNames) { obfuscatedNames.push_back(generateRandomName()); } // 建立映射关系 for (size_t i = 0; i < originalNames.size(); ++i) { nameMapping[originalNames[i]] = obfuscatedNames[i]; } } std::string generateRandomName() { std::string charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; std::uniform_int_distribution<> dis(0, charset.length() - 1); int length = std::uniform_int_distribution<>(3, 8)(gen); std::string name; for (int i = 0; i < length; ++i) { name += charset[dis(gen)]; } return name; } std::string obfuscateString(const std::string& input) { std::string result = input; // 字符串混淆:使用异或加密 std::string key = "OBFUSCATE_KEY_2024"; for (size_t i = 0; i < result.length(); ++i) { result[i] ^= key[i % key.length()]; } return result; } std::string deobfuscateString(const std::string& input) { return obfuscateString(input); // 异或加密是对称的 } std::string generateObfuscatedCode() { std::stringstream code; // 生成混淆后的头文件 code << "#include <windows.h>\n"; code << "#include <iostream>\n"; code << "#include <string>\n"; code << "#include <vector>\n"; code << "#include <map>\n"; code << "#include <fstream>\n"; code << "#include <sstream>\n"; code << "#include <random>\n"; code << "#include <algorithm>\n"; code << "#include <regex>\n"; code << "#include <ctime>\n\n"; // 生成混淆后的类定义 std::string className = generateRandomName(); code << "class " << className << " {\n"; code << "private:\n"; code << " std::vector<std::string> " << nameMapping["data"] << ";\n"; code << " std::map<std::string, std::string> " << nameMapping["config"] << ";\n"; code << " std::random_device " << nameMapping["rd"] << ";\n"; code << " std::mt19937 " << nameMapping["gen"] << ";\n\n"; code << "public:\n"; code << " " << className << "() : " << nameMapping["gen"] << "(" << nameMapping["rd"] << "()) {\n"; code << " " << nameMapping["init"] << "();\n"; code << " }\n\n"; // 生成混淆后的方法 code << " void " << nameMapping["init"] << "() {\n"; code << " " << nameMapping["config"]["version"] << " = \"" << obfuscateString("1.0.0") << "\";\n"; code << " " << nameMapping["config"]["build"] << " = \"" << obfuscateString("20241201") << "\";\n"; code << " }\n\n"; code << " void " << nameMapping["execute"] << "() {\n"; code << " std::cout << \"" << obfuscateString("=== 代码动态更新 ===") << "\" << std::endl;\n"; code << " " << nameMapping["process"] << "();\n"; code << " }\n\n"; code << " void " << nameMapping["process"] << "() {\n"; code << " std::cout << \"" << obfuscateString("正在执行混淆后的代码...") << "\" << std::endl;\n"; code << " " << nameMapping["update"] << "();\n"; code << " }\n\n"; code << " void " << nameMapping["update"] << "() {\n"; code << " std::cout << \"" << obfuscateString("代码更新完成!") << "\" << std::endl;\n"; code << " }\n"; code << "};\n\n"; // 生成混淆后的main函数 code << "int " << nameMapping["main"] << "() {\n"; code << " SetConsoleOutputCP(CP_UTF8);\n\n"; code << " " << className << " " << nameMapping["instance"] << ";\n"; code << " " << nameMapping["instance"] << "." << nameMapping["execute"] << "();\n\n"; code << " std::cout << \"" << obfuscateString("按任意键继续...") << "\" << std::endl;\n"; code << " std::cin.get();\n"; code << " return 0;\n"; code << "}\n"; return code.str(); } void saveObfuscatedCode(const std::string& filename) { std::ofstream file(filename); if (file.is_open()) { std::string code = generateObfuscatedCode(); file << code; file.close(); std::cout << "混淆后的代码已保存到: " << filename << std::endl; } } void generateMultipleVersions(int count) { for (int i = 1; i <= count; ++i) { std::string filename = "obfuscated_code_v" + std::to_string(i) + ".cpp"; saveObfuscatedCode(filename); // 重新初始化以生成不同的混淆 initializeNameMappings(); } } void executeObfuscation() { std::cout << "=== 代码动态更新 ===" << std::endl; // 显示原始名称映射 std::cout << "原始名称到混淆名称的映射:" << std::endl; for (const auto& mapping : nameMapping) { std::cout << mapping.first << " -> " << mapping.second << std::endl; } std::cout << "\n生成混淆后的代码..." << std::endl; // 生成多个版本的混淆代码 generateMultipleVersions(3); // 演示字符串混淆 std::string originalString = "Hello, World!"; std::string obfuscated = obfuscateString(originalString); std::string deobfuscated = deobfuscateString(obfuscated); std::cout << "\n字符串混淆演示:" << std::endl; std::cout << "原始: " << originalString << std::endl; std::cout << "混淆: " << obfuscated << std::endl; std::cout << "还原: " << deobfuscated << std::endl; std::cout << "\n代码动态更新完成!" << std::endl; } }; int main() { SetConsoleOutputCP(CP_UTF8); CodeObfuscator obfuscator; obfuscator.executeObfuscation(); std::cout << "\n按任意键继续..."; std::cin.get(); return 0; } 用vs2015编译的时候报错了,修改代码并给出完整的C++代码
07-11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值