参考https://www.nowcoder.com/tutorial/10003/7bdcb36b1ff74114b026c46b7ac64ac1
在C++中的基本 数据类型:
类型 | 关键字 |
---|---|
布尔型 | bool |
字符型 | char |
整型 | int |
浮点型 | float |
双浮点型 | double |
无类型 | void |
宽字符型 | wchar_t |
一些基本类型可以使用一个或多个类型修饰符进行修饰:
signed
unsigned
short
Long
类型 | 位 | 范围 |
---|---|---|
char | 1 个字节 | -128 到 127 或者 0 到 255 |
unsigned char | 1 个字节 | 0 到 255 |
signed char | 1 个字节 | -128 到 127 |
int | 4 个字节 | -2147483648 到 2147483647 |
unsigned int | 4 个字节 | 0 到 4294967295 |
signed int | 4 个字节 | -2147483648 到 2147483647 |
short int | 2 个字节 | -32768 到 32767 |
unsigned short int | 2 个字节 | 0 到 65,535 |
signed short int | 2 个字节 | -32768 到 32767 |
long int | 8 个字节 | -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 |
signed long int | 8 个字节 | -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 |
unsigned long int | 8 个字节 | 0 to 18,446,744,073,709,551,615 |
float | 4 个字节 | +/- 3.4e +/- 38 (~7 个数字) |
double | 8 个字节 | +/- 1.7e +/- 308 (~15 个数字) |
long double | 16 个字节 | +/- 1.7e +/- 308 (~15 个数字) |
wchar_t | 2 或 4 个字节 | 1 个宽字符 |
字符常量
字符常量是括在单引号中。如果常量以 L(仅当大写时)开头,则表示它是一个宽字符常量(例如 L’x’),此时它必须存储在 wchar_t 类型的变量中。否则,它就是一个窄字符常量(例如 ‘x’),此时它可以存储在 char 类型的简单变量中。
字符常量可以是一个普通的字符(例如 ‘x’)、一个转义序列(例如 ‘\t’),或一个通用的字符(例如 ‘\u02C0’)。
在 C++ 中,有一些特定的字符,当它们前面有反斜杠时,它们就具有特殊的含义,被用来表示如换行符(\n)或制表符(\t)等。下表列出了一些这样的转义序列码:
转义序列 | 含义 |
---|---|
\a | 警报铃声 |
\b | 退格键 |
\f | 换页符 |
\n | 换行符 |
\r | 回车 |
\t | 水平制表符 |
\v | 垂直制表符 |
\ooo | 一到三位的八进制数 |
\xhh . . . | 一个或多个数字的十六进制数 |
上表参考https://www.nowcoder.com/tutorial/10003/12ccf0dc499143bb80926f555d2ef01d
字符串的一些知识点
字符串实际上是使用 null 字符 ‘\0’ 终止的一维字符数组。因此,一个以 null 结尾的字符串,包含了组成字符串的字符。
由于在数组的末尾存储了空字符,所以字符数组的大小比单词 “Hello” 的字符数多一个。
下标 | 0 | 1 | 2 | 3 | 4 | 5 |
值 | H | e | l | l | o | \0 |
字符串的初始化:
#include<iostream>
using namespace std;
int main()
{
char ch1[] = { 'H','e','l','l','o' };
//中括号内数字要大于字符个数5,否则报错
char ch2[6] = { 'H','e','l','l','o','\0' };
char ch3[] = "Hello";
//中括号内数字要大于字符个数5,否则报错
char ch4[6] = "Hello";
return 0;
}
C++ 中有大量的函数用来操作以 null 结尾的字符串,简单介绍一些常用的:
函数 | 功能 |
---|---|
strcpy(s1, s2) | 复制字符串 s2 到字符串 s1。 |
strcat(s1, s2) | 连接字符串 s2 到字符串 s1 的末尾。 |
strlen(s1) | 返回字符串 s1 的长度。 |
strcmp(s1, s2) | s1 和 s2 是相同则返回 0; s1<s2 则返回值小于 0;如果 s1>s2 则返回值大于 0。 |
strchr(s1, ch) | 返回一个指针,指向字符串 s1 中字符 ch 的第一次出现的位置。 |
strstr(s1, s2) | 返回一个指针,指向字符串 s1 中字符串 s2 的第一次出现的位置。 |
上表来源:https://www.nowcoder.com/tutorial/10003/cdc30a3461824963a98bb26cb8dd5ceb
接下来是char定义字符数组和string定义字符串的一些使用方式的不同:
#include<iostream>
#include<string>
using namespace std;
int main()
{
char ch1[] = "Hello";//char定义的字符数组
int n1 = strlen(ch1);//正确的函数使用方式
//n1 = ch1.length(); 错误的函数使用方式
string ch2 = "Hello"; //string定义的字符串
int n2 = ch2.length();//正确的函数调用方式
//n2 = strlen(ch2); 错误的函数调用方式
cout << "n1=" << n1 << endl;
cout << "n2=" << n2 << endl;
return 0;
}