05 2020 档案

摘要:C++提供了很多简写的运算符,比如:+=、-=、*=、/= 和 %= 。我们在Rational类(C++ 有理数类)中重载这些运算符。 废话不多说,直接上代码,我们用+=来举例。 1. 修改Rational.h文件 Rational& operator+=(const Rational& secon 阅读全文
posted @ 2020-05-31 10:22 川尘 阅读(870) 评论(0) 推荐(0)
摘要:数组下标运算符[]通常用于访问、修改一个对象中的数据域或者元素。而现在,我们希望它的功能是:访问有理数(C++ 有理数类)的分子和分母。 首先我们在Rational.h文件的public中添加: int operator[](int index); 然后在Rational.cpp文件中实现函数: i 阅读全文
posted @ 2020-05-30 09:55 川尘 阅读(1862) 评论(0) 推荐(0)
摘要:C++只提供了整数类和浮点数类,但是没有有理数类,所以需要自己写一个有理数类。 我们将使用分数来表示一个有理数。即Rational类有两个数据域,分子叫做 numerator,分母叫做denominator,且分母不能为0。 同时,一个有理数可能又很多表现形式,比如1/3可以表示为2/6,3/9等, 阅读全文
posted @ 2020-05-29 15:05 川尘 阅读(1569) 评论(0) 推荐(0)
摘要:我们之前了解过函数的重载(详见C++函数(二))。它使得同名的函数可以接受不同的参数,实现不同的功能。而运算符重载和函数的重载很相似。也就是说,同样是运算符“+”,在不同的地方使用具有不同的功能。 还是举个例子来说: (1) 如果操作数是两个数 int a = 1, b = 2; cout << a 阅读全文
posted @ 2020-05-28 09:49 川尘 阅读(290) 评论(0) 推荐(0)
摘要:还记得引用传递吗?当时我们为了与按值传参区分,我们把它叫做按址传参。而今天我们将与引用返回区分。 按值传参和按址传参可以参考博客C++函数(二)的最后一部分。 引用返回其实和引用传递一样。引用传递使得传入的变量和所对应参数的地址相同,而引用返回使得返回值的地址与传给的变量的地址相同。 我们先来看下面 阅读全文
posted @ 2020-05-27 11:54 川尘 阅读(1066) 评论(0) 推荐(0)
摘要:之前一直没有注意我的CodeBlocks的版本问题,今天才注意到它的版本是17.12(应该是17年12月份发布的),而最新的版本是20.03,那么我们接下来就说说我是如何安装最新版本的CodeBlocks的。 安装 首先进入到CodeBlocks的官网:http://www.codeblocks.o 阅读全文
posted @ 2020-05-26 10:38 川尘 阅读(1513) 评论(0) 推荐(0)
摘要:我们如何更新二进制文件呢? 还是使用上一篇博客student.dat的例子(C++ 随机访问文件)。如果我们想更新第2个学生的名字,那么我们可以使用组合模式ios::in|ios::out|ios::binary打开要更新的文件,即student.dat文件。 代码如下: #include <ios 阅读全文
posted @ 2020-05-25 09:44 川尘 阅读(854) 评论(0) 推荐(0)
摘要:顺序访问文件 一个文件是由一个字节序列构成的。操作系统维护一个叫做文件指针(file pointer)的特殊标记,指向序列中的某个位置。读写操作都是在文件指针指向的位置进行。当文件打开时,文件指针被设置在文件开始位置。当读写数据时,文件指针会移动到下一个数据项。例如,如果使用get()函数读取一个字 阅读全文
posted @ 2020-05-24 15:36 川尘 阅读(1907) 评论(0) 推荐(0)
摘要:前面有一篇博客(C++使用getline函数循环次数少一次)提到了cin.get()这个函数。 cin.get()还可以用来防止程序“闪退”。有时我们运行我们编写的.exe文件后,会看到一个黑框一闪而过。那是因为我们没有暂停我们的程序,所以程序执行完之后就会自动退出了。而在程序末尾加上 cin.ge 阅读全文
posted @ 2020-05-23 11:24 川尘 阅读(1949) 评论(0) 推荐(1)
摘要:这篇博客是对上一篇博客(C++ 文件二进制输入输出)的实践。主要目的是实现对二进制文件的复制。 源文件是一个叫“helloWorld.exe”的文件,在执行后,会打印一句“Hello World!” 目标文件叫“test.exe”,由“helloWorld.exe”而来。 #include <ios 阅读全文
posted @ 2020-05-22 10:42 川尘 阅读(933) 评论(3) 推荐(0)
摘要:文本文件和二进制文件 我们一般将文件分为文本文件和二进制文件。文本文件就是可以通过文本编辑器打开和编辑的文件,如使用Windows中的记事本(NotePad)或UNIX中的vi可以处理的文件。非文本文件都是二进制文件,我们不能直接使用文本编辑器编辑他们,而是通过计算机程序来处理的。常见的二进制文件, 阅读全文
posted @ 2020-05-21 13:21 川尘 阅读(7162) 评论(0) 推荐(0)
摘要:在C++中,函数eof(), fail(), good(), bad()等可以检测流操作的状态。 我们之前已经学过了eof()和fail()函数,他们分别用于检测文件末尾和文件是否存在。C++还提供了另外几个检测流状态的函数。实际上,每个流都包含一个位集合,起到标识位的作用。这些位的值(0或1)指明 阅读全文
posted @ 2020-05-20 12:00 川尘 阅读(656) 评论(0) 推荐(0)
摘要:我们之前使用的ifstream可以创建一个输入程序的对象,ofstream可以创建一个输出程序的对象。而fstream可以创建既能输入又能输出的文件对象。也就是说,如果我们有一个对象既要进行输入,又要进行输出,那么fstream对象是很方便的。 fstream对象在创建时必须指定文件模式。详细的文件 阅读全文
posted @ 2020-05-19 09:41 川尘 阅读(2294) 评论(0) 推荐(0)
摘要:上一篇博客我们说到了getline函数,但是在实际运行当中,很有可能出现读入的次数和预想的不一样。比如在循环中使用getline函数,会出现输入次数少1的情况。这是因为getline函数捕捉了你输入的换行。也就是说,你以为循环的第一次,实际上已经是第二次了。 解决方法如下: //在getline函数 阅读全文
posted @ 2020-05-18 10:12 川尘 阅读(1122) 评论(0) 推荐(0)
摘要:getline函数 这个函数我们之前就有使用过:由于流提取运算符(>>)会以空白符分割,所以我们的输入中无法包含空格。而使用getline函数可以指定分隔符,这样就可以读入包含空格的文本了(如:New York)。关于getline函数,可以回顾博客C++字符串最后的部分。 getline函数定义在 阅读全文
posted @ 2020-05-17 12:40 川尘 阅读(2479) 评论(0) 推荐(1)
摘要:还记得我们之前提到的头文件<iomanip>吗?那时候我们格式化了控制台输出,那么同理,我们也可以将cout换为一个fstream或ofstream对象以格式化输出到文件。如果想不起<iomanip>头文件,可以回顾这篇博客C++格式化控制台输出。 下面我们来举个例子: #include <iost 阅读全文
posted @ 2020-05-16 12:30 川尘 阅读(976) 评论(0) 推荐(0)
摘要:简单的文件输入输出,可以参见我之前的博客C++简单的文件输入输出。 我再说一下一些流相关的东西。C++用“流”描述数据流动。若是流流向程序,则叫作输入流;若数据从程序流出,则称为输出流。同时,C++使用对象来读写数据。为了方便,输入对象就叫做输入流,输出对象就叫做 输出流。 我们以前学过的cout和 阅读全文
posted @ 2020-05-15 12:04 川尘 阅读(694) 评论(0) 推荐(0)
摘要:vbs虽然已经不是常见了,但是我觉得还挺好玩的。今天就用vbs整个活。 创建vbs文件 1. 新建一个文本文档(.txt文件) 2. 修改后缀名为.vbs(把.txt替换成.vbs) 3. 系统会提示可能导致文件不可用,点确认就OK 4. 输入代码(见下) 5. 文件→另存文件,并设置编码格式为AN 阅读全文
posted @ 2020-05-14 12:24 川尘 阅读(2789) 评论(0) 推荐(0)
摘要:打开Android Studio(我当前的版本为3.6),在菜单栏点击Build→Generate Signed Bundle/APK...→APK 点击Next 第一次使用需要创建一个新的jks文件(点击Create new...),这里已经建好了。然后点击Next 然后依次点击release,V 阅读全文
posted @ 2020-05-13 12:44 川尘 阅读(1832) 评论(0) 推荐(0)
摘要:今天看视频(正经的学习视频)时,电脑风扇一直在响。开始以为是因为浏览器占用高,可能在处理什么程序吧。但过了很久,风扇还是一直在响。好烦!这不是影响我专心看视频嘛!(手动滑稽)于是打开任务管理器,发现火绒的一个服务:Huorong Internet Security Deamo占用极高,最高高达57% 阅读全文
posted @ 2020-05-12 11:01 川尘 阅读(5940) 评论(0) 推荐(0)
摘要:加粗的是我认为常用的 持续更新 Windows系统总结 快捷键 win类(win就是Windows徽标键) win+R 打开运行 win+E 打开资源管理器 win+D 返回桌面 win+,按住返回桌面,松手后恢复原样 win+Ctrl+D 新建一个桌面 win+Ctrl+← 前一个桌面 win+C 阅读全文
posted @ 2020-05-11 10:21 川尘 阅读(1403) 评论(0) 推荐(0)
摘要:今天遇见一个奇怪的“\”,代码如下: if (--(op)->ob_refcnt != 0) \ ; \ else \ __Py_Dealloc((PyObject *)(op)) 上网查了资料后才知道这是“续行符”,我们换段代码来说: str = 'hello '\ 'world'\ '!' pr 阅读全文
posted @ 2020-05-10 12:11 川尘 阅读(2240) 评论(0) 推荐(1)
摘要:昨天虽然成功安装了Python的一些第三方库(PyCharm安装第三方库),但是pip不能使用还是很难受。所以今天解决一下。 首先我打开cmd尝试了很多指令 python -m pip install --upgrade pip python -m pip install -U pip python 阅读全文
posted @ 2020-05-09 10:30 川尘 阅读(3971) 评论(0) 推荐(0)
摘要:今晚想安装一些第三方库但是pip版本低,安装一直报错,输入升级的命令也一直不行。于是在pycharm上安装,但是还是一直失败,下面提出解决办法。 然后在搜索框搜索。但是可能由于网络的一些原因吧,我迟迟安装不上,最终以失败告终。 我的解决思路是换下载地址,也就是使用国内的镜像: 清华:https:// 阅读全文
posted @ 2020-05-08 08:25 川尘 阅读(5695) 评论(0) 推荐(2)
摘要:我们用一个问题来说。问题是这样的: 实现一个序列,该序列中包含n个栈Si (i = 1, 2, 3, ... , n),栈中存放的都是int类型的整数,并能够完成以下操作: push(t, x) 将元素x加入到栈St中,并返回元素x,即入栈操作。 top(t) 显示栈St的最后一个元素。若栈为空,则 阅读全文
posted @ 2020-05-07 12:06 川尘 阅读(2243) 评论(0) 推荐(0)
摘要:到目前为止,我们定义的函数都是没有异常类型列表的。 异常说明也叫作异常类型列表,声明了一个函数可以抛出的异常类型。没有定义异常类型列表的函数可以抛出任意类型的异常,这样看起来比较方便,但是这样的代码是不健壮的,并不是一个良好的编程习惯。函数应告诉程序员它可以抛出哪些异常,由此程序员才能写出健壮的代码 阅读全文
posted @ 2020-05-06 13:28 川尘 阅读(381) 评论(0) 推荐(0)
摘要:如果我们编写了一个函数,函数内部可能会出现异常,但是我们不想在这个函数内处理,而是想要通知调用者,那么C++允许它重抛出这个异常。语法如下: try { //Execute some code } catch (Exception& e) { //Peform some operations bef 阅读全文
posted @ 2020-05-05 09:52 川尘 阅读(542) 评论(0) 推荐(0)
摘要:C++允许多重异常捕获。由于在实际情况中,我们遇到的异常可能是多种多样的,并不只是某一种。所以C++可以在try-catch语句块中多重异常捕获。语法如下: try{ //Execute some code } catch (Exception& e1) { cout << "Exception 1 阅读全文
posted @ 2020-05-04 15:20 川尘 阅读(715) 评论(0) 推荐(0)
摘要:自定义异常类 尽管C++预定义了很多标准异常类,但可能还是无法满足我们的需求,这时候我们可以自定义异常类来描述异常。当然,如果使用C++定义的异常类就可以满足,那么尽量使用C++定义的异常类,而避免创建自己的异常类。 异常类同一般的C++类没什么区别,除了它派生自exception类或者其派生类(如 阅读全文
posted @ 2020-05-03 11:11 川尘 阅读(3041) 评论(0) 推荐(3)
摘要:异常类 在之前C++简单的异常处理的例子中,我们抛出并捕获了一个int类型的值。但是我们一般采用异常类。因为异常类相比简单的数据类型可以存储更多信息。C++预定义了多个可创建异常对象的异常类,如下图所示。 在所有的异常类中,exception类是根,定义于头文件<exception>中。类中包含一个 阅读全文
posted @ 2020-05-02 11:17 川尘 阅读(848) 评论(0) 推荐(0)
摘要:异常 异常,是程序运行时不正确的状态。比如数组越界、整数除零等程序需要报错的状态。我们可以对异常进行捕捉和处理(使用try-catch语句块)。那么对异常进行捕捉和处理有什么好处呢? 我们用整数除零的例子来讲述。 首先看一个最为基础的例子: #include <iostream> using nam 阅读全文
posted @ 2020-05-01 21:06 川尘 阅读(363) 评论(0) 推荐(0)

`