第八章 关键字

8.1 关键字:auto

C++98中auto用法(C++11已废弃)

C++98 auto用于声明变量为自动变量(拥有自动的生命周期),C++11已经删除了该用法,取而代之的是“变量的自动类型推断方法”。

// c++ 98:
int a = 10;         // 拥有自动生命期
auto int b = 20;    // 拥有自动生命期(C++11编译不过)
static int c = 30;  // 延长了生命期

C++11新标准引入了auto类型说明符,让编译器通过初始值来自动推断变量类型(这意味着通过auto定义的变量必须有初始值)。

// c++ 11:
int a = 10;
auto auto_a = a;  // 自动类型推断为int类型

auto会去除变量的引用语义

当引用对象作为初始值时,真正参与初始化的是引用对象的值,此时编译器会以引用对象的类型作为auto推算的类型:

int main(void) {
    int i = 10;
    int &ri = i;
    auto auto_i = ri;  // 去除引用语义, 自动推断为int
}

如果希望推断出来的auto类型包含引用语义,我们需要用&明确指出:

int main(void) {
    int i = 10;
    auto &auto_i = i;  // 加上引用语义, 自动推断为int&
}

auto忽略顶层const

auto一般会忽略掉顶层const,同时底层const会被保留下来:

int main(void) {
    const int ci = 10;    // 常量int
    auto auto_ci = ci;    // auto_ci被推断为int类型
    auto_ci = 20;         // 正确: auto_ci非常量

    const int &cr = ci;   // cr是指向常量int的常量引用
    auto auto_cr = cr;    // auto_cr被推断为int类型: 去除了引用语义 + 去除了顶层const
    auto_cr = 20;         // 正确: auto_cr非常量

    const int *cp = &ci;  // cp是指向常量int(底层)的常量指针(顶层)
    auto auto_cp = cp;    // auto_cp被推断为const int*类型(指向常量int的指针): 去除了顶层const + 保留底层const
    // *auto_cp = 10;     // 错误: 不能修改auto_cp指向的常量
}

如果希望推断出来的auto类型是一个顶层const,我们需要通过const关键字明确指出:

int main(void) {
    const int ci = 10;          // 常量int
    const auto auto_ci = ci;    // auto_ci被推断为const int类型
    // auto_ci = 20;            // 错误: auto_ci是一个常量, 禁止修改
}

如果用auto关键字带上&,也不会去除顶层const:

const int i = 10;

auto &j = i;  // auto&不去除顶层const语义, j类型被推断为const int
j = 10;       // 非法
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好,根据您的要求,可以使用Python语言来实现这个功能。以下是实现的步骤: 1. 读取指定文档 使用Python中的内置函数open()打开指定文档,然后使用readlines()函数读取文档中所有行的内容。 2. 索引包含第一个关键字的所有行 使用Python中的循环语句对每一行进行遍历,同时使用字符串的find()函数进行关键字匹配。 3. 在索引出的行内容中查找包含第二个关键字的内容 在匹配到包含第一个关键字的行后,使用字符串的find()函数来查找包含第二个关键字的内容。 4. 将包含第二个关键字的内容替换为第三个关键字 使用Python中的字符串替换函数replace(),将包含第二个关键字的内容替换为第三个关键字。 5. 输出所得结果 最后,将处理好的结果输出即可。 下面是实现的示例代码: ``` # 输入3组关键字 keyword_1 = "关键字1" keyword_2 = "关键字2" keyword_3 = "关键字3" # 指定文档路径 file_path = "test.txt" # 读取指定文档 with open(file_path, encoding="utf8") as f: lines = f.readlines() # 索引包含第一个关键字的所有行 matched_lines = [] for line in lines: if keyword_1 in line: matched_lines.append(line) # 在索引出的行内容中查找包含第二个关键字的内容,并且替换成关键字3 processed_lines = [] for line in matched_lines: if keyword_2 in line: line = line.replace(keyword_2, keyword_3) processed_lines.append(line) # 输出结果 for line in processed_lines: print(line.strip()) ``` 以上就是用Python实现输入3组关键字,第一个关键字在指定的文档中索引包含该关键字的所有行文本内容,第二个关键字被包含在第一个关键字索引出的行内容,第三个关键字替换掉包含第一个关键字内容的行中的第二个关键字内容的方法,希望可以帮到您!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值