2021-10-03

本文介绍了C++中的constexpr用于常量表达式,typedef和auto、decltype实现类型别名,详细讲解了自定义数据结构Sales_data的定义和使用,包括其成员和操作。此外,还探讨了命名空间的using声明以及标准库中的string对象的定义、初始化、读写方法。最后,讨论了string对象的成员函数如empty和size以及赋值、拼接操作。文章旨在帮助读者巩固C++的基础知识。
摘要由CSDN通过智能技术生成

第四天

说一下今天的一些事情,早上是起的很早,去学了大概三个小时左右,但是从那之后就回宿舍了,回到宿舍以后玩了很长时间,然后睡一觉,5点钟晚点名,点完名吃个饭,继续回宿舍,一天过去了,已经是不止一次了,宿舍还是不能是学习的地方,上午学的时候还是不在状态。
下周就是第五周了,还有还有5,6,7,8四周课,基本上都要结课考试,我的专业课还没怎么学,现在得跟一下了,虽然说我也学的算是比较快的,xixixixi。
开始今日内容。

1.constexpr

const int vrb1 = 1; //常量表达式 
const int vrb2 = vrb1 + 1; //常量表达式
int vrb3 = 3;  //vrb3不是常量表达式 
const int vrb4 = get_size //虽然vrb4本身是一个常量,但是运行时才有,所以不是常量表达式

2.类型别名

typedef
typedef double wages;
typedef wages base, *p;

上面意思是wages是double的同义词,base也是
p是double*定义的同义词,*一定是要跟着声明的

auto
decltype

3. 自定义数据结构

定义Sales_data类型
struct Sales_data{
	std::string bookNo;
	unsigned units_sold;
	double revenue; 
};

这是定义的结构体,注意大括号后面的分号

stuct Sales_data{} accum, trans;
stuct Sales_data{};
Sales_data accum, trans;

上述两种写法是一样的,大括号后面跟的也是定义的变量,推荐第二种

类数据成员

上述有三个成员
string类型的bookNo成员
unsigne类型的units_sold成员
double类型的revenue成员

使用Sales_data类

已知Sales_data类定义在"Sale_data.h"头文件内

struct Sales_data{
	std::string bookNo;
	unsigned units_sold;
	double revenue;
};
#include <iostream>
#include <string>
#include "Sales_data.h"
using namespace std;
int main(){
	Sales_data data1, data2;
	double price = 0;
	std::cin >> data1.bookNo >> data1.units_sold >> price;
	data1.revenue = data1.units_sold * price;
	return 0;
} 

下面是main函数,表示读入数据,也就是成员函数的一种用法

4.命名空间的using声明

简单解释

using std::cin; //表示下面使用空间std::cin直接cin>>
using std::cout; //同上
using std::endl; //同上

例如

cin >> i;
cout << i << endl;

5.标准库string

定义和初始化string对象
#include <string>
using std::string;

下面是简单的声明定义方法

sring s1;
string s2 = s1; //s2是s1的副本 
string s3 = "hiya"; //s3是该字符串的副本 
string s4 (19,'c'); //19个c 
string s3 ("valua"); //s3是字符串的副本,但是不包括空字符
拷贝初始化和直接初始化

如果使用一个”=“去初始化一个变量,实际上就是拷贝初始化,如果不使用等号,则执行的是直接初始化,下面举分别举一个拷贝初始化和两个直接初始化(用括号)

string s5 = "hiya"; //拷贝初始化
string s5 ("hiya"); //直接初始化
string s6 (10,'c'); //直接初始化

间接使用拷贝初始化

string s8 = string (10,'c'); //也可以分为两条语句
读写string对象
string s;
cin >> s;
cout << s <<endl;

空格符号和空字符都可以终止输入,这里只是读取了一个对象
下面读取多个对象

string word;
while(cin >>word)
	cout << word << endl;

下面是使用getline读取一整行

string line;
while(getline(cin,line))
	cout << line << endl;
return 0;
empty/size

empty是string的一个成员函数,用法如下,判断字符串是否为空,空就返回真

line.empty()
while(getline(cin,line))
	if(!line.empty(){
		...
}

line.size()返回字符串长度

string对象的赋值

和数值类型变量差不多,声明+赋值

两个string对象相加

就是两个字符串的拼接,不多说

字面值和string对象相加

当然字面值肯定也得是字符

string s4 = s1 +", ";

但是相加的二者至少得有一个是string类型
如果说是多个对象,混合运算也不行,不能把字面值直接相加

今日结束,没啥好说的,看了一堆没大用的东西,明天找有用的看,决定一星期结束基础内容,看来不太行了,到时候第八天还是继续开始数据结构c++描述,12月确实没多少天了啊,还得学英语。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值