C++中的转义序列(\r \n \t \b)和泛化转义序列

转义序列

1.换行符\n和回车符\r

首先搞清楚二者的区别:换行\n是指换到下一行开头;回车\r是指回到本行行首
测试:

#include <iostream>
using namespace std;
int main()
{
	cout << "I love China"<< endl;

	cout << "回车符\\r:" << endl;//转义序列以\开始,此处转义'\'
	cout << "I lo\rve China" << endl;//回车符后的字符>其前的字符
	cout << "I love Chi\rna" << endl;//回车符后的字符<其前的字符

	cout << "换行符\\n:" << endl;//转义序列以\开始,此处转义'\'
	cout << "I lo\nve China" << endl;

	system("pause");
	return 0;
}

在这里插入图片描述
这里解释一下回车符\r:
第一种情况下,先把“I lo”存在缓存中,一遇到\r,立马跳到行首,继续把“ve China”存入缓存。这样就覆盖了前面字符;对于第二种情况,na只是覆盖了I和一个空格,“love Chi”并不覆盖,所以可以打印到屏幕。

2.制表符\t和退格符\b

#include <iostream>
using namespace std;
int main()
{
	cout << "制表符\\t:" << endl;//转义序列以\开始,此处转义'\'
	cout << "I l\tove China" << endl;
	cout << "I l*****ove China" << endl;

	cout << "1234567\t89" << endl;
	cout << "12345678\t89" << endl;
	cout << "12345678123456789" << endl;

	cout << "退格符\\b:" << endl;//转义序列以\开始,此处转义'\'
	cout << "I lo\bve China" << endl;

	system("pause");
	return 0;
}

在这里插入图片描述
解释:

  • 退格符\b是删除前一个字符。
  • 制表符\t是每次以8个空格为单位进行制表。如第一个前面已有’I l’3个字符,所以\t空出5个格;第二个\t处在第8个位置,所以打印出一个格;第3个\t处于第9个位置,所以空8个格。

泛化的转义序列

泛化的转义序列的形式有两种:

  1. \后紧跟3个八进制数(最多只能3个,超过的算其他字符)
    如\12表示换行符,\40表示空格,\124表示大T,\1243则表示T3
  2. \x后面紧跟着1个或多个十六进制数
    如\xa表示换行符,\x20表示空格,\x54表示大T,由于字符只占8位,所以最多只能有两个16进制位,多了会报错。

测试及结果:

#include <iostream>
using namespace std;
int main()
{
	cout << "八进制泛化转义序列:" << endl;
	cout << "I lo\40ve China\12\124" << endl;
	cout << "\1243" << endl;

	cout << "十六进制泛化转义序列:" << endl;
	cout << "I lo\x20ve China\xa\x54" << endl;
	//cout << "\x100" << endl;//错误:error C2022: “256”: 对字符来说太大

	system("pause");
	return 0;
}

在这里插入图片描述

ASCII表(十进制)

在这里插入图片描述

  • 7
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值