From f6935e60bd67a1d14f02b7e7eb84c55e26f6307b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BD=AD=E4=BA=8E=E6=96=8C?= <1931127624@qq.com> Date: Fri, 25 Oct 2024 12:53:58 +0800 Subject: [PATCH] Update cpp_tricks.md --- docs/cpp_tricks.md | 50 ++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 48 insertions(+), 2 deletions(-) diff --git a/docs/cpp_tricks.md b/docs/cpp_tricks.md index 94198e7..4b97a55 100644 --- a/docs/cpp_tricks.md +++ b/docs/cpp_tricks.md @@ -343,7 +343,7 @@ struct Child : Parent { Child child(23, "peng"); // 错误!Child 没有构造函数! ``` -可以在子类里面写 `using 父类::父类`,就能自动继承父类所有的构造函数了。 +C++11 中可以在子类里面写 `using 父类::父类`,就能自动继承父类所有的构造函数了。 ```cpp struct Parent { @@ -2038,7 +2038,14 @@ TODO ## requires 语法检测是否存在指定成员函数 -## 设置 locale 为 .utf8 解决编码问题 +## 设置 locale 为 .utf8 解决 Windows 编码难问题 + +```cpp +system("chcp 65001"); +setlocale("LC_ALL", ".utf-8"); +``` + +> {{ icon.tip }} 详见 [Unicode 专题章节](unicode.md)。 ## 成员函数针对 this 的移动重载 @@ -2082,3 +2089,42 @@ int b = f >> 4; // 0x2 ## swap 缩小 mutex 区间代价 ## namespace 别名 + +有些嵌套很深的名字空间每次都要复读非常啰嗦。 + +```cpp +#include + +int main() { + std::filesystem::path p = "/var/www/html"; + ... +} +``` + +如果 `using namespace` 的话,又觉得污染全局名字空间了。 + +```cpp +#include + +using namespace std::filesystem; + +int main() { + std::filesystem::path p = "/var/www/html"; + ... +} +``` + +可以用 C++11 的 `namespace =` 语法,给名字空间取个别名。 + +```cpp +#include + +namespace fs = std::filesystem; + +int main() { + fs::path p = "/var/www/html"; + ... +} +``` + +这样以后就可以 `fs` 这个简称访问了。