当前位置: 首页 > news >正文

第3章 字符串向量数组

3 字符串向量数组

3.1 命名空间的using声明

  • 域操作符 ::
  • 安全的使用方法 using
  • 头文件不应包含using声明
string s1;
string s2 = s1;
string s3 = "hiya";
string s4(10, 'c');

3.2 string对象的操作

3.2.1 混合使用 >>getline

问题

int age;
string name;cout << "输入年龄: "; cin >> age;
cout << "输入姓名: "; getline(cin, name); // 会直接跳过! ``` **原因**:`>>` 后换行符留在缓冲区,`getline` 立即读取到空行**解决方案**:```C++
cin >> age;
cin.ignore(); // 清除缓冲区中的换行符
getline(cin, name);

3.2.2 读取文件内容

#include
#includeint main() {
ifstream file("data.txt");
string line;while (getline(file, line)) {
cout << line << endl;
}return 0;
}

3.2.3 使用自定义分隔符

string data = "apple,orange,banana";
string fruit;
istringstream iss(data);while (getline(iss, fruit, ',')) {
cout << fruit << endl;
}
// 输出:
// apple
// orange
// banana

3.2.4string::size_type 的注意事项

  1. 为什么需要 size_type
  • 标准库为跨平台兼容性设计,size_type 确保能容纳任何可能的字符串大小。
  • 实际类型通常是 size_t(无符号整型)。
  1. 避免与有符号数混用
  • 错误示例:
int n = -1;
string s = "Hello";
if (s.size() < n) { // 危险!n 转换为无符号后可能极大
cout << "Unexpected result!"; } ``` - 正确做法: ```C++ auto len = s.size(); // 使用 auto 或显式声明 if (len > 80) { // 安全比较
cout << "Long line: " << s;
}

3.2.5 非法情况:两个字符串字面值直接相加。

string s5 = "Hello" + ", " + s1; // 错误!"Hello" + ", " 无效

3.3 标准库类型vector

  • vector是容器也是类模板
  • vector不能是引用类型

3.4 迭代器

特性 说明
通用性 所有标准库容器均支持迭代器,但只有部分支持下标(如 vectorstring)。
安全性 解引用前需确保迭代器有效(非 end())。
类型 iterator(读写)、const_iterator(只读)。
失效场景 扩容或删除元素后需重新获取迭代器。
泛型编程 使用 !=++ 保证代码对各类容器通用。

3.5 数组

(1)指针数组

int* ptrs[10]; // 含 10 个 int* 的数组

(2)数组指针

int (*parray)[3]; // parray 是指向含 3 个 int 的数组的指针
int arr[3] = {1, 2, 3};
parray = &arr; // 指向整个数组
cout << (*parray)[1]; // 输出 2

(3)数组引用

int (&arrRef)[3] = arr; // arrRef 是 arr 的引用
cout << arrRef[0]; // 输出 1
http://www.jsqmd.com/news/115853/

相关文章:

  • 大模型微调实战指南:从全参数微调到BitFit的低成本学习路径
  • 灵活用工平台,我的实践复盘
  • 敢不敢用一年时间读完这12本书,模型入门必看的12本书!建议收藏!!
  • 曲线的极坐标方程输入法 | Desmos 玩法系列 02
  • Windows10/11右键-超级菜单(动态菜单)批处理安装,所有任务、环境变量、设备管理器、网络链接、设备和打印机、重启资源管理器、电源选项、 区域语言、查看串口、获取本机IP等
  • 卡帕西年度预测:大模型只释放10%潜力,2025年AI发展6大趋势
  • AVL
  • STM32学习——编码器接口测速
  • AI写论文哪个软件好?9款AI论文写作软件实测,查重率低至6%!
  • 鸿蒙系统
  • 11.20 脚本网页 数学分支
  • 学Simulink——基础MPPT控制场景实例:基于Simulink的电导增量法(INC)光伏MPPT仿真
  • 本地运行可以打印东西,docker run后却没有日志产生?记录一次AI编程的小蠢行为
  • 排序--基数排序
  • 正点原子移植linux-imx6.12的一个容易犯得问题
  • 大模型微调优化方案:PEFT-LoRA轻量化与量化技术,成本降低70%训练周期缩短65%
  • 解析:One-API 与 New-API 核心原理
  • 模板和策略模式的区别
  • 好友圈模块 Cordova 与 OpenHarmony 混合开发实战
  • 学Simulink——机器人控制场景实例:基于Simulink的SCARA机械臂关节空间PD控制仿真
  • 第4章 运算符
  • 工厂模式和抽象工厂模式的区别
  • 洞察:MCP与Function Calling区别
  • 一文搞懂DNAT与SNAT:内网外网通信的“流量翻译官”
  • 3D打印与低压灌注硅胶复模小批量零件生产制造
  • 快!太快了!一键生成!一键导出!微信自动统计数据报表来了!
  • 抽象工厂
  • 对比:字节DeerFlow与阿里DeepResearch
  • 电路板维修
  • 设计模式的概念