自学内容网 自学内容网

c++基础34转义字符和字符函数

转义字符

在C++中,转义字符是一种特殊的字符常量,由反斜杠(\)后跟一个或多个字符组成。转义字符用于表示那些不能直接表示的字符,或者用于表示一些特殊的控制字符。以下是一些常用的转义字符:

  1. 换行符 (\n):插入一个新行。
  2. 回车符 (\r):将光标移动到当前行的开头。
  3. 水平制表符 (\t):插入一个制表位(通常是8个空格)。
  4. 垂直制表符 (\v):插入一个垂直制表位。
  5. 退格符 (\b):向后删除一个字符。
  6. 响铃符 (\a):发出一个警告声。
  7. 空字符 (\0):空字符,占用一个字节。
  8. 转义字符 (\\):表示一个反斜杠字符。
  9. 单引号 (\'):表示一个单引号字符。
  10. 双引号 (\"):表示一个双引号字符。
  11. 问号 (\?):表示一个问号字符。
#include <iostream>

int main() {
    std::cout << "He said, \"Hello, World!\"" << std::endl;
    return 0;
}

在这个例子中,\"是一个转义字符,它告诉编译器我们想要在字符串中包含一个双引号,而不是字符串的结束标记。

字符函数

C++ 提供了一系列的字符处理函数,这些函数定义在 <cctype> 头文件中。以下是一些常用的字符函数:

  1. isalnum©:检查字符 c 是否是字母或数字,如果是返回非零值,否则返回0。
  2. isalpha©:检查字符 c 是否是字母,如果是返回非零值,否则返回0。
  3. iscntrl©:检查字符 c 是否是控制字符,如果是返回非零值,否则返回0。
  4. isdigit©:检查字符 c 是否是数字(0-9),如果是返回非零值,否则返回0。
  5. isgraph©:检查字符 c 是否是可打印字符且不是空格,如果是返回非零值,否则返回0。
  6. islower©:检查字符 c 是否是小写字母,如果是返回非零值,否则返回0。
  7. isprint©:检查字符 c 是否是可打印字符,如果是返回非零值,否则返回0。
  8. ispunct©:检查字符 c 是否是标点符号,如果是返回非零值,否则返回0。
  9. isspace©:检查字符 c 是否是空白字符(如空格、制表符等),如果是返回非零值,否则返回0。
  10. isupper©:检查字符 c 是否是大写字母,如果是返回非零值,否则返回0。
  11. isxdigit©:检查字符 c 是否是十六进制数字(0-9, a-f, A-F),如果是返回非零值,否则返回0。

此外,还有一些函数可以将字符在大小写之间转换:

  1. tolower©:将字符 c 转换为小写,如果 c 不是大写字母或已经是小写,则返回 c
  2. toupper©:将字符 c 转换为大写,如果 c 不是小写字母或已经是大写,则返回 c

这些函数对于处理字符串和字符数据非常有用。在使用这些函数之前,需要包含 <cctype> 头文件。例如:

#include <cctype>

bool isDigitOrLetter(char c) {
    return isalnum(static_cast<unsigned char>(c));
}

请注意,这些函数只适用于单字节字符。对于宽字符或 Unicode 字符,应使用 <cwctype> 头文件中的相应函数。

不用函数判断字符

#include <iostream>
using namespace std;
int main() {
char c;
cin>>c;
//c是否是数字 
    cout<<"是不是数字:"<<('0'<=c && c<='9')<<endl;
    //c是否是大写字母 
    cout<<"是否是大写字母:"<<('A'<=c && c<='Z')<<endl;
    //c是否是小写字母 
    cout<<"是否是小写字母:"<<('a'<=c && c<='z')<<endl;
    return 0;
}

T146010

第几个字母

  • 题目描述

输入一个大写字母,输出这个字母是从大写字母 A 开始的第几个字母。
譬如:如果输入的大写字母是 C,那么 C 是从 A 开始的第 2 个字母。如果输入的大写字母是 A,那么 A 是从 A 开始的第 0 个字母。

  • 输入格式

A ~ Z 之间的一个大写字母(包括 AZ)。

  • 输出格式

一个正整数,表示指定的字母是从大写字母 A 开始的第几个字母。

  • 样例输入
A
  • 样例输出
0

代码

  • 字符相减之后的结果,结果的数据类型变成了int。
#include <iostream>
using namespace std;
int main() {
char c;
cin>>c;
cout<<c-'A'<<endl;
    return 0;
}

T146012

后4位的字母

  • 题目描述

输入一个大写字母,输出这个字母在字母表中后 4 位对应的大写字母。比如输入字母 A,则需要输出字母 E。以下是具体的对应关系:

输入字母ABCDEFGHIJKLMNOPQRSTUVWXYZ
对应字母EFGHIJKLMNOPQRSTUVWXYZABCD
  • 输入格式

A ~ Z 之间的一个大写字母(包括 AZ)。

  • 输出格式

对应的大写字母。

  • 样例输入
A
  • 样例输出
E

代码

#include <iostream>
using namespace std;
int main() {
char c;
cin>>c;
cout<<(char)((c-'A'+4)%26+'A')<<endl;
    return 0;
}

T146002

字符转换

  • 题目描述

输入一个大写字母,现在需要按照下表的对应关系,输出这个大写字母对应的字符。

输入字母ABCDEFGHIJ
对应字符YTwhKnH!Z7
  • 输入格式

范围在 A ~ J 之间的一个大写字母(包括 AJ)。

  • 输出格式

对应的字符。

  • 样例输入
F
  • 样例输出
n

代码

  • 使用map
#include <iostream>
#include<map>
using namespace std;
int main() {
char c;
cin>>c;
map<char,char> m={{'A','Y'},{'B','T'},{'C','w'},{'D','h'},{'E','K'},{'F','n'},{'G','H'},{'H','!'},{'I','Z'},{'J','7'}};
cout<<m[c]<<endl;
    return 0;
}
  • 使用数组
#include <iostream>
#include<map>
using namespace std;
int main() {
char c;
cin>>c;
char a[]={'Y','T','w','h','K','n','H','!','Z','7'};
cout<<a[c-'A'];
    return 0;
}

size_t和ptrdiff_t

size_t

  • size_t 是一个无符号整数类型,通常用于表示大小、长度或索引。
  • 它是 std::vector::size()std::string::length() 等函数的返回类型,用于返回容器中元素的数量。
  • size_t 也是 sizeof 运算符的结果类型,用于获取数据类型或对象在内存中所占的字节数。
  • 在C++标准库中,任何返回容器大小或数组长度的函数都使用 size_t 类型。
  • size_t 的大小至少为16位,但在大多数现代平台上,它通常是32位或64位,这取决于系统的架构。

ptrdiff_t

  • ptrdiff_t 是一个有符号整数类型,用于表示两个指针之间的差异。
  • 它是指针相减的结果类型,例如,当你使用指针算术计算两个元素之间的距离时。
  • ptrdiff_t 也是迭代器减法的结果类型,如 std::vector<int>::iterator 相减的结果。
  • ptrdiff_t 可以表示负值,这对于表示反向迭代器或负索引非常有用。
  • ptrdiff_t 的大小至少为16位,并且在相同的平台上,它与 size_t 具有相同的位宽。

使用场景

  • 当你需要处理容器或数组的大小、长度或正索引时,使用 size_t
  • 当你需要计算两个指针或迭代器之间的差异时,使用 ptrdiff_t

示例代码

  • 定义示例
#include <iostream>
#include<cstdio>
using namespace std;
int main() {
size_t a=1;
ptrdiff_t b=-12;
cout<<"a:"<<a<<",b:"<<b<<endl;
scanf("%zu%td",&a,&b);
printf("%zu %td\n",a,b);
    return 0;
}
  • 使用场景示例
#include <vector>
#include <cstddef> // 包含 size_t 和 ptrdiff_t 的定义
int main() {
    std::vector<int> vec = {1, 2, 3, 4, 5};

    // 使用 size_t 获取容器大小
    size_t size = vec.size(); // size 是无符号整数

    // 使用 ptrdiff_t 计算两个迭代器之间的差异
    std::vector<int>::iterator it1 = vec.begin();
    std::vector<int>::iterator it2 = vec.end();
    ptrdiff_t diff = it2 - it1; // diff 是有符号整数
    return 0;
}

原文地址:https://blog.csdn.net/qq_37755459/article/details/143722657

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!