home | help
std::filesy...ke_preferred(3)  C++ Standard Libary std::filesy...ke_preferred(3)

NAME
     std::filesystem::path::make_preferred   -	std::filesystem::path::make_pre-
     ferred

Synopsis
	path& make_preferred();  (since C++17)

	Converts all directory separators in the generic-format view of the path
     to the
	preferred directory separator.

	For example, on Windows, where \ is the preferred  separator,  the  path
     foo/bar will
	be converted to foo\bar.

Parameters
	(none)

Return value
	*this

Exceptions
	May throw implementation-defined exceptions.

Example
	Windows  can use / as a separator, but prefers \, so make_preferred con-
     verts the
	forward slashes to backslashes. On the other hand, POSIX does not use  \
     as a
	separator,  because backslashes are valid filename characters a the Win-
     dows path on
	POSIX actually refers to a file with the name "a\\b\\c". For this reason
     the
	"separators" are not converted.

     // Run this code

      #include <filesystem>
      #include <iostream>

      int main()
      {
	  std::filesystem::path
	      windows_path("a\\b\\c"),
	      posix_path("a/b/c");

	  std::cout
	      << "Windows path: "
	      << windows_path << " -> "
	      << windows_path.make_preferred() << '\n'
	      << "POSIX path: "
	      << posix_path << " -> "
	      << posix_path.make_preferred() << '\n';
      }

Output:
      // on Windows
      Windows path: "a\\b\\c" -> "a\\b\\c"
      POSIX path: "a/b/c" -> "a\\b\\c"

      // on POSIX
      Windows path: "a\\b\\c" -> "a\\b\\c"
      POSIX path: "a/b/c" -> "a/b/c"

See also
			     alternative directory separator which may	be  used
     in addition
	constexpr  value_type  to  the portable /. On Windows, this is the back-
     slash character
	preferred_separator  \. On POSIX, this is the same forward  slash  /  as
     the portable
	[static]	     separator
			     (public static member constant)

http://cppreference.com 	   2024.06.10	   std::filesy...ke_preferred(3)

home | help