mirror of
https://github.com/changkun/modern-cpp-tutorial.git
synced 2025-12-17 20:54:39 +03:00
see #12: translate ch09
This commit is contained in:
@@ -6,19 +6,23 @@ order: 9
|
||||
|
||||
# 第 9 章 其他杂项
|
||||
|
||||
> 内容修订中
|
||||
|
||||
[TOC]
|
||||
|
||||
## 9.1 新类型
|
||||
|
||||
### `long long int`
|
||||
|
||||
`long long int` 并不是 C++11 最先引入的,其实早在 C99,`long long int` 就已经被纳入 C 标准中,所以大部分的编译器早已支持。C++11 的工作则是正式把它纳入标准库,规定了一个 `long long int` 类型至少具备 64 位的比特数。
|
||||
`long long int` 并不是 C++11 最先引入的,其实早在 C99,
|
||||
`long long int` 就已经被纳入 C 标准中,所以大部分的编译器早已支持。
|
||||
C++11 的工作则是正式把它纳入标准库,
|
||||
规定了一个 `long long int` 类型至少具备 64 位的比特数。
|
||||
|
||||
## 9.2 noexcept 的修饰和操作
|
||||
|
||||
C++ 相比于 C 的一大优势就在于 C++ 本身就定义了一套完整的异常处理机制。然而在 C++11 之前,几乎没有人去使用在函数名后书写异常声明表达式,从 C++11 开始,这套机制被弃用,所以我们不去讨论也不去介绍以前这套机制是如何工作如何使用,你更不应该主动去了解它。
|
||||
C++ 相比于 C 的一大优势就在于 C++ 本身就定义了一套完整的异常处理机制。
|
||||
然而在 C++11 之前,几乎没有人去使用在函数名后书写异常声明表达式,
|
||||
从 C++11 开始,这套机制被弃用,所以我们不去讨论也不去介绍以前这套机制是如何工作如何使用,
|
||||
你更不应该主动去了解它。
|
||||
|
||||
C++11 将异常的声明简化为以下两种情况:
|
||||
|
||||
@@ -93,16 +97,19 @@ try {
|
||||
|
||||
### 原始字符串字面量
|
||||
|
||||
传统 C++ 里面要编写一个充满特殊字符的字符串其实是非常痛苦的一件事情,比如一个包含 HTML 本体的字符串需要添加大量的转义符,例如一个Windows 上的文件路径经常会:`C:\\What\\The\\Fxxk`。
|
||||
传统 C++ 里面要编写一个充满特殊字符的字符串其实是非常痛苦的一件事情,
|
||||
比如一个包含 HTML 本体的字符串需要添加大量的转义符,
|
||||
例如一个Windows 上的文件路径经常会:`C:\\File\\To\\Path`。
|
||||
|
||||
C++11 提供了原始字符串字面量的写法,可以在一个字符串前方使用 `R` 来修饰这个字符串,同时,将原始字符串使用括号包裹,例如:
|
||||
C++11 提供了原始字符串字面量的写法,可以在一个字符串前方使用 `R` 来修饰这个字符串,
|
||||
同时,将原始字符串使用括号包裹,例如:
|
||||
|
||||
```cpp
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
|
||||
int main() {
|
||||
std::string str = R"(C:\What\The\Fxxk)";
|
||||
std::string str = R"(C:\File\To\Path)";
|
||||
std::cout << str << std::endl;
|
||||
return 0;
|
||||
}
|
||||
@@ -113,7 +120,6 @@ int main() {
|
||||
C++11 引进了自定义字面量的能力,通过重载双引号后缀运算符实现:
|
||||
|
||||
```cpp
|
||||
|
||||
// 字符串字面量自定义必须设置如下的参数列表
|
||||
std::string operator"" _wow1(const char *wow1, size_t len) {
|
||||
return std::string(wow1)+"woooooooooow, amazing";
|
||||
|
||||
Reference in New Issue
Block a user