Copy Button
#include <filesystem>
#include <iostream>
#include <algorithm>
#include <string>
#include <cstring>
#include <cstdio>
#include <cstdint>
using std::filesystem::path,
std::filesystem::directory_iterator,
std::filesystem::directory_entry,
std::basic_string,
std::for_each,
std::strcmp,
std::FILE,
std::fopen,
std::fclose,
std::fwrite,
std::fread,
std::rewind,
std::string,
std::strcpy,
std::size_t,
std::cerr;
int main(){
basic_string str(".");
path p(str);
auto di_stuff = [](directory_entry de){
path p = de.path();
if(strcmp(p.extension().string().data(), ".html")==0 && strcmp(p.stem().string().data(), "template")!=0){
int size = file_size(p)/sizeof(char);
cerr << "filename: " << p.filename().string() << " filesize: " << size << "\n";
FILE* f = fopen(p.filename().string().data(), "r+");
char* buffer = new char[size + 1];
fread(buffer, sizeof(char), size, f);
string str(buffer);
string::size_type st = str.find("</head>");
str.insert(st, "<script type=\"text/javascript\" src=\"myscript.js\"></script>\n");
char format[200]{"\0"};
strcpy(format, "<button type=\"button\" onclick=\"copyText(%i)\">copy</button>\n<pre><code id=\"%i\" class=\"language-c++\">\n");
string source("<pre><code class=\"language-c++\">");
st = str.find(source);
int id = 0;
while(st != string::npos){
cerr << "found at pos: " << st << "\n";
char temp[100]{"\0"};
sprintf(temp, format, id, id);
str.replace(st, source.length(), temp);
st = str.find(source);//, st + 1
++id;
}
rewind(f);
fwrite(str.data(), sizeof(char), str.length(), f);
delete[] buffer;
buffer = nullptr;
fclose(f);
f = nullptr;
}
};
directory_iterator di(p);
for_each(begin(di), end(di), di_stuff);
return 0;
}
home
C++ Examples© 2024 TBD