2020 1月13日

Second_week 1.13-1.19

- Study_update
Mon. whlie,do whlie①,break②
Tue. continue①,try语句块和异常处理②,函数基础③,局部对象与静态局部对象,分离式编译
Wed. 参数传递,const形参和实参,数组形参①,main:预处理命令行选项(没看懂!),含有可变形参的函数②
Thur.
Fri 文件的读写①
Sat ----
Sun. ----

1.13 Monday

whlie

用whlie求数组的元素之和

#include "pch.h"
#include <iostream>
using namespace std;
int sumit(int *parray_begin, int *parray_end);
int sumit(int *parray_begin, int *parray_end)
{int sum = 0;if (!parray_begin || !parray_end)return sum;while (parray_begin != parray_end)//把当前的值加到sum上//然后增加指针,使其指向下一个元素sum += *parray_begin++;return sum;
}
int main()
{int ia[3]{ 1,3,3 };cout<<sumit(begin(ia), end(ia));
}

①do whlie

如果循环控制是在循环体内被设置的话,用传统的whlie语句就必须设置一个值来启动循环,使用Do whlie语句确保执行一次循环。

②break

break终止最近的while,do while,for或者switch语句.程序的执行权被传递给紧接着被终止语句之后的语句。

1.14 Thusday

①continue

continue语句(continue statement)终止最近的循环中的当前迭代并立即开始下一次迭代。continue只能出现在for,while和dowhile循环的内部,或者嵌套在此类循环里的语句或块的内部。也作用与最近的循环,但是break可以直接作用于switch,continue只有当switch语句嵌套在迭代语句内部时,才能使用。

#include "pch.h"
#include <iostream>
#include <string>
using namespace std;int main()
{string buf;while (cin>>buf&&!buf.empty()){if (buf[0]=='_')//判断首字符是否为下划线,如果不是就中断当次循环进入下一循环。{continue;}//下面继续处理符合预期的字符串}
}//c++primer 洋葱骑士

②try语句块和异常处理

异常是指存在于运行时的反常行为,这些行为超出了函数的正常功能的范围,例如 失去数据库连接以及遇到意外输入等。
异常处理机制为程序中异常检测和异常处理这两部分提供协作支持,个人理解是遇到问题,会发出故障信号表明出现故障,然后这是专门负责发出异常的部分,无需知道故障在哪里得到解决,然后有另外的处理异常的代码块进行处理。异常处理包括:

·throw表达式(throw expression)

异常检测部分使用throw表达式来表示它遇到了无法处理的问题。我们说throw引发(raise)了异常。
个人理解 throw是表明异常的环节。

·try语句块(try block)

异常处理部分使用try语句块处理异常。try语句块以try关键字开始,并且以多个Catch子句(catch clause)结束。try语句块中代码抛出的异常通常会被某个catch子句处理。因为catch子句“处理”异常,所以它们也被称作异常处理代码(exception class)

·一套异常类(exception class)

用于在throw表达式和相关的catch子句之间传递异常的具体信息。
程序的异常检测部分使用throw表达式引发一个异常。throw表达式包含关键字throw和紧随其后的一个表达式,其中表达式的类型就是抛出的异常类型。
例如
if(a!=b)
{
throw runtime)error("****");
类型runtime_error是标准异常类型的一种,定义在stdecept头文件中。

·Try语句块

通用形式
try{
program-statements
}
catch(exception-declaration)
{
handler-statements
}
catch(exception-declaration)
{
handler-statements
}
跟在try块后面的是Catch子句,包括三部分:关键字catch。括号内一个可能未命名的对象的声明(称作异常声明)以及一个块。
个人理解
可能抛出异常的语句,放置于try块中,try块对应一个子句去处理这个异常。

③函数基础

典型的函数包括返回类型,函数名,形参列表以及函数体。
通过调用运算符来执行函数,形式是一对圆括号,作用于一个表达式,该表达式是函数或者指向函数的指针,圆括号内是实参列表。
调用函数完成两项工作:一是用实参初始化函数对应的参数,二是将控制权转移给被调用函数,此时主函数暂时中断,被调函数开始执行。

1.15 Wednesday

尽量使用常量引用

①数组形参

数组的两个特殊性质对定义和使用作用在数组上的函数有影响,这两个性质分别是:不允许拷贝数组(C++ primer p102)以及使用数组时通常会将其转换成指针。

②含有可变形参的函数

如果实参数量未知但是全部实参的类型相同,可以使用initializer_list类型的形参。
定义时跟Vector差不多,initializer_list对象中的元素永远是常量。
如果想要向initializer_list形参中传递一个值的序列,则必须把序列放在一对花括号中。

#include "pch.h"
#include <iostream>
#include <vector>
using namespace std;int sum(initializer_list<int>li)//计算元素之和的函数,形参为initializer_list类型。
{int res=0;for (auto beg=li.begin();beg!=li.end();beg++ ){res += *beg;}return res;
}
int main()
{cout << sum({ 12,42,54,44,55,34 });//调用sum函数 实参必须用花括号扩起。
}
//洋葱骑士

1.16Friday

文件的读写①

如果要把用户数据可以在不同的“会话sesion”累计使用。
为了达到这个目的,要做到:(1)每次执行结束,将用户的姓名及会话的某些数据写入文件,(2)在程序开启另外一个会话时,将数据从文件中读回。
要对文件进行读写操作,首先得包含fstream头文件:
#include
为了打开一个可供输出的文件,我们定义一个ofstream(供输出用的file stream)对象,并将文件名传入:
//以输出模式开启seq_data.txt
ofstream outfile(“seq_data.txt”);
声明outfile的时候,如果文件不存在,便有一个文件被产生出来并且打开供输出使用。如果存在,这个文件被打开用于输出,而原有文件的数据会被丢弃。
如果我们并不希望丢弃原有内容,而是希望将数据增加到该文件中,需要以追加模式打开这个文件,为此我们提供第二个参数ios_base::app给ofstream对象。
//以追加模式(append mode)打开seq_data.txt
//新数据会被加到文件末尾
ofstream outfile(“seq_data.txt”.ios_base::app);
文件有可能打开失败。在进行写入操作之前,我们必须确认文件的确打开成功,方法是检验class object的真伪:
//如果outfile的求值结果为/false’,表示文件未成功打开
if(!outfile)。。。。

例如:

在我的操作系统的桌面创建一个data.txt并写入内容。

#include <iostream>
#include <fstream>
#include <string>
using namespace std;int main()
{ofstream outfile("C:\\Users\\洋葱骑士\\Desktop\\data.txt",ios_base::app);//文件地址if (!outfile)//检查是否打开成功cerr << "error!" << endl;else{string stra = "hello "; string strb = "world";//写入文件outfile << stra<<' ' << strb<<' ' << endl;cout << "success!";}
}//洋葱骑士


2020.01-Study_update.2相关推荐

  1. 泰坦以太(以太流说) titan_ysl 2020.01.27

    泰坦以太(以太流说) titan_ysl 2020.01.27 从学习物理到现在,几十年来,我一直认为以太的存在能最合理地解释许多物理现象,但由于一直没人给于其适当的定义,导致其被废弃,从而让现代物理 ...

  2. Golandidea 2020.01破解版

    Golandidea 2020.01 链接: https://pan.baidu.com/s/1aFKsxAIbrEeEtMYpePmtbQ 提取码: 3y9j 1.安装成功,不要运行,将jetbra ...

  3. 【转载】语义分割综述2020.01

    转载: 作者: http://blog.csdn.net/john_bh/ 出处:https://blog.csdn.net/john_bh/article/details/107044528 论文链 ...

  4. 纪中集训2020.01.13【NOIP普及组】模拟赛C组总结————My First Time Write Summary

    纪中集训2020.01.13[NOIP普及组]模拟赛C组总结 题目编号 标题 0 [NOIP普及组模拟]取值( numbers.pas/cpp) 1 [NOIP普及组模拟]数对(pairs.pas/c ...

  5. 纪中集训2020.01.16【NOIP普及组】模拟赛C组总结+【0.Matrix】分析

    纪中集训2020.01.16[NOIP普及组]模拟赛C组总结+[0.Matrix]分析 题目: 0.matrix 1.product 2.binary 3.value 巨佬估分:100+100+40+ ...

  6. LHAPDF configure error - 2020.01.02

    LHAPDF configuration error - 2020.01.02 1. What I was doing on this bloody night 1.1 Before I run in ...

  7. 2020.01.02 52周存钱

    这个 示例是一个存钱记录 本示例涉及知识点: ①while循环实现案例 ②记录每周的存款数math库 ③用循环记录,迭代函数 ④用户灵活输入值,参数传入与全局变量 ⑤根据用户输入日期判断金额 ⑥dat ...

  8. linuxoracle静默安装应答文件修改_Windows7重要更新补丁安装包 2020.01.17

    2020年1月14日微软官方宣布正式停止支持Windows 7(以下简称Win7),除付费政企用户外,不再提供安全补丁或者更新服务.那么以后win7的更新要怎么办?难道只能"裸奔" ...

  9. 《惢客创业日记》2020.01.28-02.06 惢客发展的三个阶段(上)

    今天,开始分享我的想法,也可以说是"丑话说到前面"的续篇,只不过,想一次表达清楚.这篇日记不是今天写的,已经花了我近一个星期的构思时间,今天只是做一下梳理和总结.说实话,写关于惢客 ...

  10. WIFI安全:利用Kali自带的Aircarck-ng工具包,以及Fluxion渗透wap/wap2无线WIFI,超详细。(前言:无线网卡选择,环境详尽信息)2020.01

    前言 无线网卡的选择 在Kali中,命令iw list查看网卡详尽信息或者命令lsusb查看USB接口设备. 无论我们选取哪款无线网卡做渗透测试,至少要满足以下两点:支持AP模式(可作为evil无线接 ...

最新文章

  1. 美多商城之订单(提交订单2)
  2. 【算法拾遗(java描写叙述)】--- 选择排序(直接选择排序、堆排序)
  3. C语言基础(6)-char类型
  4. autumn 0.5.1 : Python Package Index
  5. Linux使用tcpdump抓取网络数据包示例
  6. 数据挖掘——数据仓库
  7. 【异常】INFO: TopologyManager: EndpointListener changed ...
  8. linux 设置自动定时清理日志
  9. 《麦肯锡·卓越工作方法》
  10. IDEA 2021首个大版本发布,Java开发者感动哭了(附新亮点演示)
  11. java 怎样判断拼图是否可还原_拼图游戏可解性判断,自动生成可解拼图
  12. 《匆匆那年》的你,还记得吗?数学中的那些有(hui)趣(se)的定理(10)——天下没有免费午餐定理(No Free Lunch Theorem)
  13. 【Bioinfo Blog 011】【R Code 008】——功能富集分析
  14. 关于表情识别-综述 FER --FER2013
  15. 51单片机 普中V2 超声波测距 报警 显示 基于MCS51单片机的超声波测距模块的开发
  16. 第五章第三题(将千克转换成磅)(Conversion from kilogram to pound)
  17. 数字林业智能化管理平台
  18. 转载:无需刻录DMG光盘,教你在VMWare下安装MAC OS X Snow Leopard 10.6
  19. 最新win10快捷键汇总虚拟桌面Cortana小娜多任务处理键盘操作更方便
  20. 数据库审计部署方式有哪些?哪种比较好?

热门文章

  1. 微搭低代码学习之数据收集
  2. 互联网金融与大数据风控相结合的九大维度
  3. MD5加密中文结果不一致
  4. 【神经网络与深度学习-TensorFlow实践】-中国大学MOOC课程(十四)(卷积神经网络))
  5. The 15th Chinese Northeast Collegiate Programming Contest. A Matrix
  6. python实现对图片的处理--图像处理课设
  7. 信息化建设(智慧城市)工程中造价不清晰的问题
  8. Android viewPager2 + fragment 模拟微信首页2(滑动页面标签同步变化,点击标签滑动页面)
  9. 英语教师杂志英语教师杂志社英语教师编辑部2022第24期目录
  10. 【学术探讨】万能密码原理剖析