sitemap.xml creation code


#include <iostream>
#include <filesystem>
#include <algorithm>
#include <string>
#include <cstdio>
#include <ctime>

using std::filesystem::path,
    std::filesystem::directory_iterator,
    std::filesystem::directory_entry,
    std::basic_string,
    std::for_each,
    std::difftime,
    std::mktime,
    std::tm,
    std::time,
    std::time_t, 
    std::cerr,
    std::FILE,
    std::fopen,
    std::fclose,
    std::fwrite,
    std::fread;

void directorystuff(basic_string s, FILE* f, int pos){
    directory_iterator di (s);
    while(di != end(di)){
        if((*di).is_directory()){
            basic_string<char> temp(s);
            temp += (*di).path().filename();
            temp += "/";
            directorystuff(temp, f, pos);
        }else{
            path p((*di).path(), path::generic_format);
            if(p.extension().string().compare(".html") == 0){
                basic_string<char> format("\t\n\t\thttps://cppexamples.com%s\n\t\t%i-%i-%i\n\t\tnever\n\t\t0.5\n\t\n");
                time_t tt = time(nullptr);
                tm* t = localtime(&tt);   
                fprintf(f, format.data(), (*di).path().string().substr(pos, (*di).path().string().length() - pos).data(), t->tm_year + 1900, t->tm_mon + 1, t->tm_mday);
             }
        }
        ++di;
    }
}

int main(){
    basic_string str("testdirectory");//working directory?

    //if the directory doesn't end with a '/' add one
    if(str.at(str.length() - 1) != '/'){
        str += "/";
    }
    path p(str);
    basic_string<char> temp(p);
    temp += "sitemap.xml";
    basic_string<char>::size_type pos = str.find_last_of("/");
    FILE* f = fopen( temp.data(), "w+");
    basic_string s("\n\n");
    fwrite(s.data(), sizeof(char), s.size(), f);
    directorystuff(p, f, pos);
    basic_string<char> t(""); 
    fwrite(t.data(), sizeof(char), t.size(), f);

    fclose(f);
    return 0;
}
C++ Examples© 2024 TBD