• # une solution ?

    Posté par (site web personnel) . En réponse au message renommage de fichiers en masse. Évalué à 3.

    Bonjour à tous et merci beaucoup pour votre aide.
    Ci-dessous un début de solution qui intègrent vos conseils et qui semble fonctionner.
    La ligne qui change tout (pour moi) c'est std::setlocale(LC_ALL, "en_US.UTF-8");
    J'ai tester en local et sur un compilo en ligne dont je vous mets le lien ici.
    https://godbolt.org/z/4sW4eWjKe

     #include <cctype>
     #include <cstddef>
     #include <cstdio>
     #include <cstring>
     #include <filesystem>
     #include <iconv.h>
     #include <ios>
     #include <iostream>
     int main(int argc, char *argv[])
     {
     std::setlocale(LC_ALL, "en_US.UTF-8");
     if (argc > 1)
     {
     for (int i = 1; i < argc; ++i)
     {
     char *origin = argv[i];
     size_t ol = strlen(origin);
     char destination[4 * ol];
     size_t dl = sizeof(destination);
     memset(destination, 0x00, dl);
     char *pin = origin;
     char *pout = destination;
     iconv_t conv = iconv_open("ascii//TRANSLIT", "utf-8");
     if (conv == (iconv_t)-1)
     {
     if (errno == EINVAL)
     std::cout << "The conversion is not supported by the implementation."
     << std::endl;
     else
     std::cout << "something got wrong..." << std::endl;
     }
     int ret = iconv(conv, &pin, &ol, &pout, &dl);
     if (iconv_close(conv) != 0)
     std::cerr << "error with iconv_close" << std::endl;;
     std::cout << "origin: " << origin << std::endl;
     std::cout << "destination: " << destination << std::endl;
     }
     }
     else
     std::cout << "no argument provided" << std::endl;
     return 0;
     }

    Les logiciels de traitement de texte sont à la rédaction ce que la 2CV est à l'automobile, une vieille voiture dont on se souvient avec nostalgie mais technologiquement dépassée