当前位置: 首页 > 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.gsyq.cn/news/127800.html

相关文章:

  • 曲线的极坐标方程输入法 | Desmos 玩法系列 02
  • AVL
  • 鸿蒙系统
  • STM32学习——编码器接口测速
  • BST
  • 卡帕西年度预测:大模型只释放10%潜力,2025年AI发展6大趋势
  • 学Simulink——基础MPPT控制场景实例:基于Simulink的电导增量法(INC)光伏MPPT仿真
  • 模板模式
  • 模板和策略模式的区别
  • 学Simulink——机器人控制场景实例:基于Simulink的SCARA机械臂关节空间PD控制仿真
  • 工厂模式和抽象工厂模式的区别
  • 洞察:MCP与Function Calling区别
  • 快!太快了!一键生成!一键导出!微信自动统计数据报表来了!
  • 对比:字节DeerFlow与阿里DeepResearch
  • 【后端开发笔记】JVM底层原理-垃圾回收篇 - 指南
  • 电路板维修
  • 备份恢复模块 - Cordova与OpenHarmony混合开发实战
  • 第2章 变量和基本类型
  • 年前“催婚大作战”,用“技术思维”解决婚恋问题
  • 红黑树
  • 账户增删改查与余额统计 Cordova 与 OpenHarmony 混合开发实战
  • AI协作平台提供论文框架建议与内容优化,适合团队合作研究
  • Matlab/Simulink中的Buck型双向DC/DC变换器:一阶、二阶LADRC与PI控...
  • 【MongoDB实战】第10章 新手避坑指南:90%的人都会踩的错误
  • 【图数据库与知识图谱】第一部分:基石篇——图与图谱的基本认知
  • 基于三电平SVPWM改进技术的异步电机感应电机直接转矩控制性能研究参考文献参考研究及其优劣对比
  • Day35less--嵌套
  • 如何用AI工具复现数学建模优秀论文?这10款写作助手兼排版利器别错过
  • Azure RTOS ThreadX 是什么?
  • 从文献复现到期刊排版:10个AI写作工具让数学建模论文更轻松