std::filesystem::path:: append, std::filesystem::path:: operator/=
|
path
&
operator
/
=
(
const
path
&
p
)
;
|
(1) | (desde C++17) |
|
template
<
class
Source
>
path & operator / = ( const Source & source ) ; |
(2) | (desde C++17) |
|
template
<
class
Source
>
path & append ( const Source & source ) ; |
(3) | (desde C++17) |
|
template
<
class
InputIt
>
path & append ( InputIt first, InputIt last ) ; |
(4) | (desde C++17) |
path::preferred_separator
al formato genérico de
*
this
.
// Donde "//host" es un root-name path("//host") / "foo" // el resultado es "//host/foo" (añade con separador) path("//host/") / "foo" // el resultado también es "//host/foo" (añade sin separador) // En POSIX, path("foo") / "" // el resultado es "foo/" (añade) path("foo") / "/bar"; // el resultado es "/bar" (reemplaza) // En Windows, path("foo") / "C:/bar"; // el resultado es "C:/bar" (reemplaza) path("foo") / "C:"; // el resultado es "C:" (reemplaza) path("C:") / ""; // el resultado es "C:" (añade, sin separador) path("C:foo") / "/bar"; // produce "C:/bar" (elimina ruta relativa, luego añade) path("C:foo") / "C:bar"; // produce "C:foo/bar" (añade, omitiendo el root-name de p)
(2)
y
(3)
participan en la resolución de sobrecarga solo si
Source
y
path
no son del mismo tipo, y ya sea:
-
Sourcees una especialización de std::basic_string o std::basic_string_view , o - std:: iterator_traits < std:: decay_t < Source >> :: value_type es válido y denota un tipo de carácter de codificación posiblemente calificado como const ( char , char8_t , (desde C++20) char16_t , char32_t , o wchar_t ).
Contenidos |
Parámetros
| p | - | nombre de ruta a añadir |
| source | - | std::basic_string , std::basic_string_view , cadena multibyte terminada en nulo, o un iterador de entrada que apunta a una secuencia multibyte terminada en nulo, que representa un nombre de ruta (ya sea en formato portable o nativo) |
| first, last | - | par de LegacyInputIterator s que especifican una secuencia multibyte que representa un nombre de ruta |
| Requisitos de tipo | ||
-
InputIt
debe cumplir con los requisitos de
LegacyInputIterator
.
|
||
-
InputIt
debe ser uno de los tipos de caracteres codificados (
char
,
wchar_t
,
char16_t
y
char32_t
).
|
||
Valor de retorno
* this
Excepciones
Puede lanzar std:: bad_alloc si falla la asignación de memoria.
Notas
Estas funciones efectivamente producen una aproximación del significado del argumento de ruta p en un entorno donde * this es el directorio de inicio.
Ejemplo
La salida se produce en Windows.
#include <filesystem> #include <iostream> namespace fs = std::filesystem; int main() { fs::path p1 = "C:"; p1 /= "Users"; // does not insert a separator std::cout << "\"C:\" / \"Users\" == " << p1 << '\n'; p1 /= "batman"; // inserts fs::path::preferred_separator, '\' on Windows std::cout << "\"C:\" / \"Users\" / \"batman\" == " << p1 << '\n'; }
Salida posible:
"C:" / "Users" == "C:Users" "C:" / "Users" / "batman" == "C:Users\\batman"
Informes de defectos
Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.
| DR | Se aplica a | Comportamiento publicado | Comportamiento correcto |
|---|---|---|---|
| LWG 3244 | C++17 |
faltaba la restricción de que
Source
no puede ser
path
|
añadida |
Véase también
|
concatena dos rutas sin introducir un separador de directorio
(función miembro pública) |
|
|
(C++17)
|
concatena dos rutas con un separador de directorio
(función) |