std::experi...ath::native,(3)

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

Welcome to the <pink>std::experi...ath::native,(3)</pink> page from the C++ Standard Libary manual β€” yes, that's the exact spelling on the page, and we're keeping it. πŸ’… This is the bestie briefing for std::experimental::filesystem::path::c_str and std::experimental::filesystem::path::native, with all the signatures, notes, and tiny details intact.

πŸ’– NAME πŸ’–

Okay so the NAME block is doing that cute little dash thing, and it is literally:

std::experimental::filesystem::path::c_str,std::experimental::filesystem::path::native,
-
std::experimental::filesystem::path::c_str,std::experimental::filesystem::path::native,

No cap, that's the whole NAME vibe.

πŸ“œ Synopsis πŸ“œ

Here's the signature lineup, exactly as printed:

const value_type* c_str() const;   (1) (filesystem TS)
const string_type& native() const; (2) (filesystem TS)
operator string_type() const;      (3) (filesystem TS)

It's all about accessing the native path name as a character string. And the numbered tea:

  1. 1) is equivalent to native().c_str().
  2. 2) returns the native string representation of the pathname by reference.
  3. 3) returns the native string representation of the pathname by value.

πŸ“ Parameters πŸ“

(none) β€” literally none, bestie.

🎁 Return value 🎁

The native string representation of the pathname, using native syntax, native character type, and native character encoding. This string is suitable for use with OS APIs.

🚨 Exceptions 🚨

1,2) β€” noexcept specification: noexcept.

πŸ—’οΈ Notes πŸ—’οΈ

The conversion function (3) is provided so that standard file-opening APIs that accept std::basic_string file names, such as the std::ifstream constructor, can use pathnames with no changes to code:

fs::path p = "/tmp/text.txt";
std::ifstream f(p);

🌸 Example 🌸

// Run this code

#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 ✨

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

πŸ‘€ See also πŸ‘€

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

🏷️ Categories 🏷️

  • Noindexed pages
  • unconditionally noexcept

🫣 Hidden categories 🫣

  • Pages with unreviewed unconditional noexcept template
  • Pages with unreviewed noexcept template

That's the whole page, bestie. Source/version/date sign-off: http://cppreference.com Β· 2024.06.10 Β· std::experi...ath::native,(3). Slay and bye πŸ’–βœ¨

πŸ“¦ where this page comes from