std::filesystem::path::c_str, std::filesystem::path::native, std::filesystem::path::operator string_type()

来自cppreference.com
< cpp‎ | filesystem‎ | path
 
 
 
 
const value_type* c_str()constnoexcept;
(1) (C++17 起)
const string_type& native()constnoexcept;
(2) (C++17 起)
operator string_type()const;
(3) (C++17 起)

访问作为字符串的原生路径名。

1) 等价于 native().c_str()
2) 以引用返回路径名的原生格式表示。
3) 以值返回路径名的原生格式表示。

目录

[编辑]参数

(无)

[编辑]返回值

路径名的原生格式表示,使用原生语法、原生字符类型,及原生字符编码。此字符串适用于 OS API。

[编辑]注解

提供转换函数 (3) 以令接受 std::basic_string 文件名的 API 能使用路径名而无需更改代码。

[编辑]示例

#include <cstdio>#ifdef _MSC_VER#include <fcntl.h>#include <io.h>#else#include <clocale>#include <locale>#endif#include <filesystem>#include <fstream>   int main(){#ifdef _MSC_VER _setmode(_fileno(stderr), _O_WTEXT);#elsestd::setlocale(LC_ALL, "");std::locale::global(std::locale(""));#endif   std::filesystem::path p(u8"要らない.txt");std::ofstream(p)<<"文件内容";// 在 LWG2676 前的 MSVC 上使用 operator string_type(),// 其中 string_type 是 wstring,仅根据非标准扩展工作。// LWG2676 后使用新的 fstream 构造函数   // 原生字符串表示可用于 OS 专有 API#ifdef _MSC_VERif(std::FILE* f = _wfopen(p.c_str(), L"r"))#elseif(std::FILE* f =std::fopen(p.c_str(), "r"))#endif{for(int ch;(ch = fgetc(f))!=EOF;std::putchar(ch)){}std::fclose(f);}   std::filesystem::remove(p);}

可能的输出:

文件内容

[编辑]参阅

返回转换到字符串的原生路径名格式的路径
(公开成员函数)[编辑]
返回转换到字符串的通用路径名格式
(公开成员函数)[编辑]
close