-
- [1.4 C++对C语言数据类型的扩展](#1.4 C++对C语言数据类型的扩展)
-
- [1.4.1 结构体](#1.4.1 结构体)
- [1.4.2 联合](#1.4.2 联合)
- [1.4.3 枚举](#1.4.3 枚举)
- [1.4.4 布尔](#1.4.4 布尔)
- [1.4.5 字符串](#1.4.5 字符串)
1.4 C++对C语言数据类型的扩展
基本的数据类型 char、unsigned char、int、short、unsigned shor、long、unsigned long、float、double、long double与C语言相同。扩展了bool类型,对结构体、联合、枚举做了改进。
1.4.1 结构体
- C++中定义结构型变量,可以省略struct关键字
- C++结构体中可以直接定义函数,谓之成员函数(方法)
cpp
#include <iostream>
#include <cstring>
using namespace std;
int main (void) {
struct std {
int age;
char name[20];
void who() {
cout << " 我是: " << name << " 今年: " << age << endl;
}
};
std s1; //不需要 struct std s1; 这样写,可以省略struct
s1.age = 20;
strcpy(s1.name, "王五");
s1.who();
return 0;
}
1.4.2 联合
-
C++中定义联合体变量,可以省略union关键字
cppunion XX{......}; XX x; //定义联合体变量直接省略union
-
支持匿名联合
cppunion {//没有名字 ...... };
cpp
#include <iostream>
using namespace std;
int main (void) {
union { //匿名联合
int num;
char c[4];
};
num = 0x12345678;
cout << hex << (int)c[0] << " " << (int)c[1] << endl;
return 0;
}
1.4.3 枚举
-
C++中定义枚举变量,可以省略enum关键字
-
C++中枚举是独立的数据类型,不能当做整型数使用
cpp#include <iostream> using namespace std; int main (void) { enum COLOR{RED, GREEN, BLUE}; COLOR c = GREEN; // c = 2; //error cout << c << endl; return 0; }
1.4.4 布尔
C++中布尔(bool)是基本数据类型,专门表示逻辑值
布尔类型的字面值常量:
true 表示逻辑真
false 表示逻辑假
布尔类型的本质:单字节的整数,使用1表示真,0表示假
任何基本类型都可以被隐式转换为布尔类型
cpp
#include <iostream>
using namespace std;
int main (void) {
bool a = true;
cout << a << endl; //输出:1
cout << boolalpha << a << endl; //输出:true
a = 5 + 3;
cout << boolalpha << a << endl; //隐式转换bool型 输出:true
return 0;
}
1.4.5 字符串
-
C++兼容C中的字符窜表示方法和操作函数
-
C++专门设计了string类型表示字符串
-
string类型字符串定义
cppstring s; //定义空字符串 string s("hello"); string s = "hello"; string s = string("hello");
-
字符串拷贝
cppstring s1 = "hello"; string s2 = s1;
-
字符串连接
cppstring s1 = "hello", s2 = " world"; string s3 = s1 + s2; // s3: hello world s1 += s2; //s1: hello world
-
字符串比较
cppstring s1 = "hello", s2 = " world"; if(s1 == s2){ cout << "false" << endl; } //类似C语言中strcmp(......) if(s1 != s2){ cout << "true" << endl; }
-
随机访问
cppstring s = "hello"; s[0] = 'H'; //Hello
-
获取字符串长度
cppsize_t size();//都不统计'\0' size_t length();//都不统计'\0'
-
转换为C风格的字符串
cppconst char* c_str(); string s2("hello"); const char *p = s2.c_str(); printf("%s\n", p);
-
字符串交换
cppvoid swap(string s1, string s2)
-