// ConsoleApplication3.cpp : This file contains the 'main' function. Program execution begins and ends there. // #pragma comment(lib, "rpcrt4.lib") #include <windows.h> #include <chrono> #include <ctime> #include <fstream> #include <iomanip> #include <iostream> #include <rpcdce.h> #include <sstream> #include <thread> #include <uuids.h> using namespace std; std::string get_time_now() { auto now = std::chrono::system_clock::now(); time_t raw_time = std::chrono::system_clock::to_time_t(now); struct tm tm_info; localtime_s(&tm_info, &raw_time); std::stringstream ss; ss << std::put_time(&tm_info, "%Y%m%d%H%M%S"); return ss.str(); } string get_UuidCreate() { RPC_CSTR rpcStr; string uuidValue; UUID newUUID; UuidCreate(&newUUID); UuidToStringA(&newUUID, &rpcStr); uuidValue = (char*)rpcStr; RpcStringFreeA(&rpcStr); return uuidValue; } std::string get_CoCreateGuid() { std::string result; GUID guid; if (S_OK == CoCreateGuid(&guid)) { char* buffer = new char[36]; snprintf(buffer, 36, "%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x", guid.Data1, guid.Data2, guid.Data3, guid.Data4[0], guid.Data4[1], guid.Data4[2], guid.Data4[3], guid.Data4[4], guid.Data4[5], guid.Data4[6], guid.Data4[7]); result = std::string(buffer); } return result; } void write_content_to_file(std::string file_name, std::string content_str) { fstream w_file(file_name, std::ios::app); if (!w_file.is_open()) { std::cout << "Create or open " << file_name << " failed!" << std::endl; return; } w_file << content_str << std::endl; w_file << std::endl; std::cout << get_time_now() << ",finished in " << __FUNCSIG__ << std::endl; } int main() { std::cout << get_time_now() << ",started in " << __FUNCSIG__ << std::endl; std::stringstream ss; for (int i = 0; i < 1000000; i++) { ss << i + 1 << "," << get_UuidCreate() << "," << get_CoCreateGuid() << std::endl; } std::string file_name = get_time_now() + ".txt"; write_content_to_file(file_name, ss.str()); ss = std::stringstream(); std::cout << ss.str() << std::endl; std::cout << get_time_now() << ",finished in " << __FUNCSIG__ << std::endl; }