字符串、向量和数组

嚴華  金牌会员 | 2022-9-17 08:34:47 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 937|帖子 937|积分 2811

C++ Primer学习笔记:string、vector、迭代器以及数组,只记录不会或不熟悉的地方
博客小站:blog.smartdog.top
命名空间
  1. std::cin
复制代码
使用标准输入输出命名空间,:: 域操作符表示:编译器应从操作符左侧名字所示的作用域中寻找右侧那个名字。
使用 using 可以引入某个命名空间中的成员,再使用时不需要写命名空间:
  1. // using namespace::name;
  2. using std::cin;
  3. // 后面省略命名空间,直接写 cin>>a;
复制代码
头文件中一般来说不应该包含using声明,因为头文件会被拷贝到引用它的文件中,造成命名冲突。
string

初始化
  1. #include <string>
  2. using std::string;
  3. string s1;
  4. string s2 = s1;  // 等价 string s2(s1)
  5. string s3 = "hello";  // 等价 string s3("hello")
  6. string s4(10,'c');  // s4内容是10个c
复制代码
使用等号是拷贝初始化,编译器把等号右侧的初始值拷贝到新创建的对象中去。不使用等号,像 s4,执行的是直接初始化。
s4的形式可以写成 string s4 = string(10,'c');,等价于string temp(10,'c');  string s4 = temp;,并没有任何补偿优势。
操作
  1. os<<s;
  2. is>>s;
  3. getline(is,s); // 从is中读取一行赋值给s,返回is,用来保留输入时的空白符
  4. s.empty();
  5. s.size();  // 字符个数
  6. s[n];
  7. s1 + s2;
  8. s1 = s2;
  9. s1 == s2;   // string对象的相等性判断对字母大小写敏感
  10. s1 != s2;
  11. <, <=, >, >=;  //字典序比较
复制代码
string::size_type 类型

string.size() 函数返回的是一个 string::size_type 类型的值。
string 类及其他大多数标准类型都定义了几种配套的类型。这些配套类型体现了标准库类型与机器无关的特性,类型 size_type 即是其中的一种。在具体使用的时候,通过作用域操作符来表明名字 size_type 是在类 string 中定义的。
因为 size 函数返回的是一个无符号整数,所以不要让 size() 函数和 int 在一个表达式中,避免混用 int 和 unsigned 可能带来的问题。
字面值和string对象相加

需要确保 加法运算符了两侧至少一个是 string:
  1. string s4 = s1 + ", "; // 对
  2. string s5 = "hello" + " ,"; // 错
  3. string s6 = s1 + ", " + "world"; // 错
  4. string s7 = "hello" + ", " + s1; // 错
复制代码
因为某些历史原因,也为了与C兼容,所以C++语言中的字符串字面值并不是标准库类型string的对象。
处理string对象中的字符

在 cctype头文件中定义了一组标准库函数。
  1. #include "cctype";
  2. isalnum(c); // 字母或数字
  3. isalpha(c); // 字母
  4. iscntrl(c); // 控制字符
  5. isdigit(c); // 数字
  6. isgraph(c); // 不是空格但可打印
  7. islower(c); // 小写字母
  8. isprint(c); // 可打印字符
  9. ispunct(c); // 标点符号
  10. isspace(c); // 空白(控制、横向纵向制表符、回车符、换行符、进纸符
  11. isupper(c); // 大写字母
  12. isxdigit(c); // 十六进制数字
  13. tolower(c); // to小写字母
  14. toupper(c); // to大写字母
复制代码
for循环改变字符串中的字符
[code]string s("Hello world!!!");for(auto &c : s){ // 如果要改变,需要是引用    c = toupper(c);}cout=,
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

嚴華

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表