5.C++字符串拼接和分割
C++字符串拼接和分割一、字符串拼接字符串拼接的核心需求是把多个不同类型(字符串、数字、字符等)的内容合并成一个字符串,C++ 有多种实现方式。 1. 推荐方式:ostringstream(类型安全,适配所有类型)这是最通用、最安全的方式,支持任意数据类型拼接,也是 C++ 最佳实践: 1234567891011121314151617181920212223242526272829303132#include <iostream>#include <sstream>#include <string>using namespace std;// 通用拼接函数:支持任意数量、任意类型的参数template <typename... Args>string concat(Args&&... args) { ostringstream oss; // 折叠表达式(C++17及以上),依次写入所有参数 (oss << ... << args); return oss....
4.文件IO操作
文件IO操作 1. 核心头文件与流对象C++ 实现文件读写必须包含 <fstream> 头文件,该头文件提供了 3 个核心的文件流类,用于不同的文件操作场景: 流类名 功能说明 核心操作方向 ifstream 专门用于从文件读取数据 输入(读) ofstream 专门用于向文件写入数据 输出(写) fstream 既可读又可写文件 输入 + 输出 2. 文件打开模式文件打开时需要指定模式,决定文件的操作规则,可通过 open() 函数或流对象构造函数指定,多个模式用 | 分隔: 模式常量 功能说明 ios::in 以只读方式打开文件;若文件不存在,打开失败 ios::out 以只写方式打开文件;若文件不存在则自动创建,若文件已存在则清空原有内容 ios::app 追加模式;写入的所有数据都会添加到文件末尾,不会清空原有内容 ios::trunc 截断模式;若文件已存在,打开时清空所有内容(ios::out 模式默认包含此特性) ios::binary 二进制模式;按字节流读写(默认是文本模式,会处理换行符等特殊字符)...
3.左值和右值
左值和右值左值(lvalue)和右值(rvalue)是 C++ 中表达式的两种核心分类,其划分依据是表达式是否可以被取地址、是否有持久的存储位置。这个概念是理解 C++ 移动语义、完美转发等高级特性的基础。 一、核心定义与判断标准1. 左值(lvalue, left value) 核心特征: 有持久的存储地址(可以是栈、堆、全局 / 静态存储区); 可以用 & 取地址; 通常出现在赋值语句的左边(但不是绝对标准)。 常见例子: 变量名、数组元素、函数返回的左值引用(T&); *ptr(解引用指针)、a[i](数组下标访问)、this 指针。 123int a = 10; // a 是左值(有地址,可被取址)int* p = &a; // 合法:&a 取左值的地址a = 20; // 合法:左值可以出现在赋值语句左边 2. 右值(rvalue, right value) 核心特征: 没有持久的存储地址(通常是临时对象、字面量,用完即销毁); 不能用 & 直接取地址; 通常出现在赋值语句的右边。 常见例子: 字...
2.万能引用和完美转发
一、万能引用1. 万能引用(Universal Reference)定义:万能引用不是一种新的引用类型,而是 C++11 中对特定形式的引用的称呼 —— 只有当模板参数是 T&& 且 T 是被推导的模板参数时,这个引用才是万能引用(也叫转发引用)。 关键特征: 形式必须是 T&&(模板参数的右值引用形式) 必须发生类型推导(比如模板函数的参数) 能绑定到左值、右值、const/non-const 等所有类型 反例(不是万能引用): 123456// 1. 没有模板参数推导,只是普通右值引用void func(int&& x) {} // 2. 形式不是 T&&(是 const T&&)template <typename T>void func(const T&& x) {} 正例(万能引用): 12template <typename T>void func(T&& x) {&...
1.可调用对象function类
可调用对象function类函数指针用于指向普通成员函数和静态成员函数 定义与使用 定义一个普通函数 1int func(int, int); 定义函数指针类型的变量 1int (*funcPtr)(int, int); //指针通常用ptr表示 使用函数指针的实例: 1234567891011121314151617181920#include<iostream>//定义函数指针类型的变量int (*funcPtr)(int, int);//定义一个普通函数int add(int a, int b){ return a + b;}int main(){ //函数指针指向函数 funcPtr = add; //也可以写funcPtr = &add;函数名等于函数的地址 //调用函数指针指向的函数 funcPtr(1, 2); //不用写成(*funcPtr)(1, 2),编译器会自动解引用,两种写法效果一样 return 0;} 优点与局限性优点: 简单直观,适用于简单的回调函数^回调函数。 局限性: 不能捕获上...
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub. Quick StartCreate a new post1$ hexo new "My New Post" More info: Writing Run server1$ hexo server More info: Server Generate static files1$ hexo generate More info: Generating Deploy to remote sites1$ hexo deploy More info: Deployment