南昌市网站建设_网站建设公司_Banner设计_seo优化
2025/12/20 21:01:15 网站建设 项目流程

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询