C++ åèæå
- C++11
- C++14
- C++17
- C++20
- C++ ç¼è¯å¨æ¯ææ åµè¡¨
- ç¬ç«ä¸å®¿ä¸»å®ç°
- C++ è¯è¨
- C++ å ³é®è¯
- é¢å¤çå¨
- C++ æ ååºå¤´æä»¶
- å ·åè¦æ±
- åè½ç¹æ§æµè¯ (C++20)
- å·¥å ·åº
- ç±»åæ¯æï¼åºæ¬ç±»åãRTTIãç±»åç¹æ§ï¼
- æ¦å¿µåº (C++20)
- é误å¤ç
- 卿å å管ç
- æ¥æåæ¶é´å·¥å ·
- å符串åº
- 容å¨åº
- è¿ä»£å¨åº
- èå´åº (C++20)
- ç®æ³åº
- æ°å¼åº
- è¾å ¥/è¾åºåº
- æä»¶ç³»ç»åº
- std::filesystem::path
- std::filesystem::filesystem_error
- std::filesystem::directory_entry
- std::filesystem::directory_iterator
- std::filesystem::file_time_type
- std::filesystem::recursive_directory_iterator
- std::filesystem::file_status
- std::filesystem::space_info
- std::filesystem::file_type
- std::filesystem::perms
- std::filesystem::perm_options
- std::filesystem::copy_options
- std::filesystem::directory_options
- std::filesystem::absolute
- std::filesystem::canonical, std::filesystem::weakly_canonical
- std::filesystem::relative, std::filesystem::proximate
- std::filesystem::copy
- std::filesystem::copy_file
- std::filesystem::copy_symlink
- std::filesystem::create_directory, std::filesystem::create_directories
- std::filesystem::create_hard_link
- std::filesystem::create_symlink, std::filesystem::create_directory_symlink
- std::filesystem::current_path
- std::filesystem::exists
- std::filesystem::equivalent
- std::filesystem::file_size
- std::filesystem::hard_link_count
- std::filesystem::last_write_time
- std::filesystem::permissions
- std::filesystem::read_symlink
- std::filesystem::remove, std::filesystem::remove_all
- std::filesystem::rename
- std::filesystem::resize_file
- std::filesystem::space
- std::filesystem::status, std::filesystem::symlink_status
- std::filesystem::temp_directory_path
- std::filesystem::is_block_file
- std::filesystem::is_character_file
- std::filesystem::is_directory
- std::filesystem::is_empty
- std::filesystem::status_known
- std::filesystem::is_fifo
- std::filesystem::is_other
- std::filesystem::is_regular_file
- std::filesystem::is_socket
- std::filesystem::is_symlink
- 注é
- æ¬å°ååº
- æ£å表达å¼åº
- ååæä½åº
- çº¿ç¨æ¯æåº
- å®éªæ§ C++ ç¹æ§
- æç¨çèµæº
- ç´¢å¼
- std 符å·ç´¢å¼
- åç¨æ¯æ (C++20)
- C++ å ³é®è¯
ä½ç½®ï¼é¦é¡µ > C++ åèæå >æä»¶ç³»ç»åº > std::filesystem::absolute
std::filesystem::absolute
è¿åä¸ p å¼ç¨åä¸æä»¶ç³»ç»ä½ç½®çè·¯å¾ï¼æ»¡è¶³ is_absolute() 为 true ã䏿åºéè½½å¨é误æ¶è¿åé»è®¤æé çè·¯å¾ã
åæ°
| p | - | è¦è½¬æ¢æç»å¯¹å½¢å¼çè·¯å¾ |
| ec | - | 䏿åºéè½½ä¸æ¥åé误çè¾åºåæ° |
è¿åå¼
è¿åä¸ p å¼ç¨å䏿件çç»å¯¹ï¼å°½ç®¡ä¸å¿
è§èï¼è·¯å¾å
å¼å¸¸
䏿¥å std::error_code& åæ°çéè½½å¨åºå± OS API éè¯¯æ¶æåº filesystem_error ï¼ä»¥ç¬¬ä¸ path åæ° p åä½ä¸ºé误ç åæ°ç OS éè¯¯ç æé ãè¥ OS API è°ç¨å¤±è´¥ï¼åæ¥å std::error_code& åæ°çéè½½è®¾ç½®è¯¥åæ°ä¸º OS API é误ç ï¼èè¥ä¸åºç°éè¯¯åæ§è¡ ec.clear() ãè¥å
ååé
失败ï¼åä»»ä½ä¸æ 记为 noexcept çéè½½å¯è½æåº std::bad_alloc ã
注æ
é¼å±å®ç°è®¤ä¸º p ä¸åå¨ä¸æ¯é误ã
对äºåºäº POSIX çæä½ç³»ç»ï¼ std::filesystem::absolute(p) çä»·äº std::filesystem::current_path() / p
å¯¹äº Windows ï¼ absolute å¯ä»¥å®ç°ä¸ºå¯¹ GetFullPathNameW çè°ç¨ã
示ä¾
#include <iostream> #include <filesystem> namespace fs = std::filesystem; int main() { fs::path p = "C:cl.exe"; std::cout << "Current path is " << fs::current_path() << '\n' << "Absolute path for " << p << " is " << fs::absolute(p) << '\n'; // å®é ä½ç½®ï¼ "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\cl.exe" }
å¯è½çè¾åºï¼
Current path is "D:/local/ConsoleApplication1" Absolute path for "C:cl.exe" is "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\cl.exe"
