std::experi...8string,...(3)

πŸ“¦ version 2024.07.05, in nixpkgs unstable, opensuse-leap 16.0

okay so hi bestie πŸ’– this page is std::experi...8string,...(3) from the C++ Standard Libary, and we are lowkey obsessed because it's all about pulling the internal pathname out in native pathname format, converted to a specific string type. It's giving path-conversion main character energy, no cap ✨

✨ NAME ✨

std::experimental::filesystem::path::string,wstring,u8string,... - std::experimental::filesystem::path::string,wstring,u8string,...

🌸 Synopsis 🌸

okay so the signatures, verbatim, because we do not mess with code here 🫢

          template< class CharT, class Traits = std::char_traits<CharT>,

                    class Alloc = std::allocator<CharT> >                (1)
       (filesystem TS)
          std::basic_string<CharT,Traits,Alloc>

              string( const Alloc& a = Alloc() ) const;
          std::string string() const;
          std::wstring wstring() const;
          std::string u8string() const;                                  (2)
       (filesystem TS)
          std::u16string u16string() const;
          std::u32string u32string() const;

It returns the internal pathname in native pathname format, converted to the specific string type. Conversion, if any, is specified in todo β€” yes, literally todo, bestie 😭

  1. All memory allocations are performed by a.
  2. The encoding in the case of u8string() is always UTF-8.

πŸŽ€ Parameters πŸŽ€

(none) β€” literally no parameters, bestie. The vibe check is empty and that's the point 🫢

πŸ’– Return value πŸ’–

The internal pathname in native pathname format, converted to specified string type. That's it, that's the return πŸ’…

πŸ¦‹ Exceptions πŸ¦‹

May throw implementation-defined exceptions. So like, implementation-defined, meaning don't @ me for exact exception types πŸ’€

πŸ“ Example πŸ“

Run it with the little // Run this code energy, bestie:

        #include <clocale>
        #include <cstdio>
        #include <experimental/filesystem>
        #include <fstream>
        #include <iostream>
        namespace fs = std::experimental::filesystem;

        int main()
        {
            std::setlocale(LC_ALL, "en_US.utf8");
            std::locale::global(std::locale("en_US.utf8"));

            fs::path p = fs::u8path(u8"要らγͺい.txt");

            // native string representation can be used with OS APIs
            std::ofstream(p) << "File contents"; // this uses operator string()
            if (std::FILE* f = std::fopen(p.c_str(), "r"))
            {
                int ch;
                while ((ch=fgetc(f))!= EOF) putchar(ch);
                std::fclose(f);
            }

            // multibyte and wide representation can be used for output
            std::cout.imbue(std::locale());
            std::cout << "\nFile name in narrow multibyte encoding: "
                      << p.string() << '\n';

            std::wcerr.imbue(std::locale());
            std::wcerr << "File name in wide encoding: "
                       << p.wstring() << '\n';

            fs::remove(p);
        }

🌈 Possible output 🌈

and the possible output is giving exactly this:

        File contents
        File name in narrow multibyte encoding: 要らγͺい.txt
        File name in wide encoding: 要らγͺい.txt

πŸ‘‘ See also πŸ‘‘

other path-string besties you might wanna check:

  • generic_string
  • generic_wstring β€” returns the path in generic pathname format converted to a string
  • generic_u8string β€” (public member function)
  • generic_u16string
  • generic_u32string

πŸ’… Categories πŸ’…

  • Noindexed pages
  • Uses of dcl rev begin with nonempty note

xoxo, your Unix bestie πŸ’… β€” source: http://cppreference.com, version/date: 2024.06.10, page: std::experi...8string,...(3). bye bestie 🫢

πŸ“¦ where this page comes from