《C++学习笔记》
欧阳磊
技术改变世界,学无止境,不忘初心!
展开
-
C++:文件的写入和读取
C++提供了 std::fstream,用于以独立于平台的方式访问文件。std::fstream从std::ofstream那里继承了写入文件的功能,并从 std::ifstream 那里继承了读取文件的功能。要使用 std::fstream 类或其基类,需要添加头文件:#include <fstream>要使用 fstream、ofstream 或 ifst...原创 2017-01-11 17:29:04 · 1174 阅读 · 0 评论 -
C++:VS控制台闪退,看不到输出结果,添加system(“pause”);
system("pause")就是从程序里调用“pause”命令,而“pause”这个系统命令的功能很简单,就是在命令行上界面输出一行类似于“Pressanykeytoexit”或“请按任意键继续...”的字样,等待用户按一个键,然后返回。如果不添加system("pause"),那么命令行界面就会闪退,看不到输出结果。如果使用的是C语言,system函数是包含在stdlib.h头文件中...原创 2017-06-02 16:04:01 · 40721 阅读 · 0 评论 -
光标突然由竖线变成小黑块怎么解决?
本来写代码写的好好的,突然光标就由竖线变成小黑块,很烦,写一个删一个,上网查了一下,原来是不小心碰到了转换的快捷键Insert,键盘上可能只是简称Ins,按一下就会换回来了。...原创 2017-06-15 18:17:28 · 28517 阅读 · 7 评论 -
VS编译错误C4996 'scanf': This function or variable may be unsafe.
最近用VS编写代码时,老碰到这个错误:C4996 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.1、我用的解原创 2017-06-15 20:17:22 · 2249 阅读 · 0 评论 -
C++学习笔记四之使用new来创建动态数组
【一】1、静态联编:不管程序最终是否使用数组,数组都在那里,它占用了内存,在编译时给数组分配内存被称为静态联编。2、动态联编:使用new时,如果在运行阶段需要数组,则创建它;如果不需要,则不创建,数组是在运行时创建的。指针和数组名之间的差别:指针代表着内存地址可以进行运算,而数组名则不行。【示例代码】#include #include int main(){ using原创 2017-07-07 15:07:04 · 7698 阅读 · 2 评论 -
C++:数组作为函数参数传递
当函数的参数是数组时,该以何种方式传递?目前有两种方式,一种是通过数组名传递,另一种是通过指针传递。如下所示:void function1(int a[], int size);void function2(int *a, int size);其实,这里int a[]和int *a是等效的,都表示a就是一个int类型的指针,也就是说数组的首地址实际上就是指针,要注意的是:数组并不是指针...原创 2017-07-08 18:16:36 · 966 阅读 · 2 评论 -
《C++函数模板》
函数模板可以用来创建一个通用的函数,以支持多种不同的形参,避免重载函数的函数体重复设计。它的最大特点是把函数使用的数据类型作为参数。函数模板的声明形式为:template<typename 数据类型参数标识符><返回类型><函数名>(参数表){ 函数体}举个例子:template <typename T>void Swa...原创 2017-07-25 19:15:18 · 543 阅读 · 0 评论 -
《VS2015运行程序时拒绝访问》
平常玩游戏打开TGP,打完游戏之后再用vs写代码都没怎么出现过问题,今天玩完CF之后,运行代码发现TMD拒绝访问,我靠,网上搜了一下,都说是TGP的原因,估计是加速的时候把vs里面的一些功能给关了,而且关了TGP也没用,只能重启电脑了,亲测有效。...原创 2017-08-02 17:12:56 · 6312 阅读 · 1 评论 -
C++:怎么不用科学计数法和保留小数位数?
十进制数输出用C++编程的时候,如果输出的数字太大,系统默认按科学计数法输出结果,这样的显示不是很直观,所以我们要改成平常用的十进制。只需要在输出结果前面加上:cout.setf(ios_base::fixed,ios_base::floatfield);或者cout.setf(ios::fixed,ios::floatfield);如果上面的不行就改成下面的,按道理应该是...原创 2017-08-07 15:56:57 · 30615 阅读 · 0 评论 -
C++:引用变量&
引用变量是一种复合类型。引用是已定义的变量的别名(另一个名称),假设蟑螂的小名叫小强,那么我们说蟑螂和小强就是同一个东西,只是名字不一样。换成变量也一样,假设有变量A,它的引用为B,那么B就是A的别名,A就是B,B就是A,它们的值和地址都一样。【创建引用变量】C++将&符号作为地址运算符,假设有个变量C,那么&C就是C的地址(内存单元);同时&符号也可以用来声明...原创 2017-08-09 14:49:41 · 1384 阅读 · 0 评论 -
C++函数参数传递
这篇文章主要的作用是认清const与指针,以及const参数在按值传参、按地址传参、按引用传参之间的关系。#注意:const常量是不能改变的,所以不能作为左值,只能作为常量来使用,也就是只能作为右值。下面的调用函数中有带const的都重新定义了一个新变量并且赋初值,不赋初值会报错,然后把const常量赋给新定义的变量。【指针和const】const int a = 10;int...原创 2017-08-10 23:41:01 · 669 阅读 · 0 评论 -
如何使输入的数字成为数组的长度?
写代码的时候,数组一般要指定长度或者直接赋初值,如果是要指定长度:int shuzu[SIZE];这里的SIZE必须是常量,用#define和const都可以将SIZE固定为常量值;但是我想把自己从键盘输入的值作为数组的长度随时改变,那该怎么做呢?使用动态数组可以做到:int size;cin>>size;int *shuzu=new int [size];这样就行原创 2017-08-13 15:40:45 · 8709 阅读 · 0 评论 -
插入排序算法(十一)
插入排序法是通过对未排序的数据逐个插入合适的位置来进行排序的。插入排序法是先比较前两个数字,排好序后,再将后面的数字跟前面排好序的数字依次比较,找到合适位置,插进去。假设有N个数,按从小到大排列:1 4 3 5 2第一步:先比较前两个数1和4,不用交换;1 4 3 5 2第二步:将3和前面两个已经排好序的数比较,先和4比较,交换位置,然后和1比较,不交换;1 3 4 5原创 2017-08-17 17:01:02 · 670 阅读 · 0 评论 -
sizeof()获取数据类型的字节数
数据类型都占有一定的内存,用sizeof()函数可以求得各数据类型所占有的字节数。【代码示例】#include #include using namespace std;int main(){ int a, b, c, d, e, f, g, h,i,j,k; a=sizeof(char); b = sizeof(short); c = sizeof(int); d =原创 2017-08-20 18:27:18 · 9962 阅读 · 0 评论 -
《VS配置pthread多线程库》
POSIX标准包含了一系列用于多线程编程的API(pthread),除了win32之外,许多现代的操作系统都渐渐开始支持pthread。我的配置:windows10+VS2010一、下载pthread多线程库1、pthread多线程库下载地址:ftp://sourceware.org/pub/pthreads-win32里面有三种格式提供下载,exe、tag.gz、zip,选择一个较新的版本下载2...原创 2018-05-16 10:52:03 · 3043 阅读 · 1 评论 -
《C++ string类》
C++标准库中string类以类型的形式对字符串进行封装,使得它除了像一个存储字符的容器外,更加包含了字符序列的处理操作。 string类所有函数string类的所有成员函数 函数名称 实现功能 构造函数 产生或者复制字符串 析构函数 销毁字符串 assign,= 赋值 Swap 交换两个字符串的内容 append(),push...原创 2018-06-08 17:51:26 · 3642 阅读 · 0 评论 -
《数字、string、wstring之间的相互转换》
使用C++版本C++11及更高版本string和wstring的区别<span style="color:#333333">wstring(wchar_t string)是宽char,Unicode编码,一般情况下一个字符占两个字节大小string(char string)是窄char,<a data-cke-saved-href="https://www.bai...原创 2018-06-29 14:04:01 · 11235 阅读 · 0 评论 -
C++:vector容器
参考书籍:《大道至简》目录vector元素访问方法定义vector对象vector常用函数遍历vector容器vector元素的查找和搜索vector交换对象vector是最简单的序列式容器,支持随机访问元素。vector作为动态数组使用是非常方便的,基本上可以实现数据结构中队列、数组和堆栈的所有功能。vector元素访问方法可以直接访问vector的操作方...原创 2018-09-28 14:52:44 · 467 阅读 · 0 评论 -
《 error C1083: 无法打开包括文件:“StdAfx.h”: No such file or directory》
error C1083: 无法打开包括文件:“StdAfx.h”: No such file or directoryIntelliSense: 无法打开 源 文件 "StdAfx.h"以前也碰到过这个问题,但是没有太注意,今天碰到了,感觉很不爽,找了一下解决方法:选择项目名称右键选择“属性”配置属性c/c++预编译头不使用预编译头然后把cpp文件中的...原创 2018-10-15 17:34:08 · 15863 阅读 · 4 评论 -
《C++ 预编译》
C++的预编译(预处理),是指在C++程序源代码被编译之前,由预处理器对C++程序源代码进行的处理。这个过程并不对程序的源代码进行解析,但它把源代码分割或处理成为特定的符号用来支持宏调用。程序的编译过程可以分为预处理、编译、汇编三部分,其中预处理是首先执行的过程,预处理过程扫描程序源代码,对其进行初步的转换,产生新的源代码提供给编译器。预处理过程读入源代码之后,会检查代码里包含的预处理指令,...原创 2018-11-15 09:21:39 · 1281 阅读 · 0 评论 -
C++:循环和判断语句
循环和判断语句C++ 提供了以下几种循环类型:while循环 do...while 循环 for 循环 嵌套循环C++ 提供了以下几种循环控制语句:break 语句 continue 语句 goto 语句C++ 提供了以下几种判断语句:if 语句 if...else 语句 嵌套 if 语句 switch 语句 嵌套 switch 语句...原创 2018-11-22 11:25:44 · 5430 阅读 · 0 评论 -
《C++:表达式必须包含类类型》
报错原因出现“表达式必须包含类类型”这种报错,可能就是声明类对象为基本类型的变量和声明类的对象为指针时调用成员变量的方式使用错误导致的。声明类对象为基本类型的变量时,应该使用直接成员访问运算符(.)来访问;声明类的对象为指针时,应该使用箭头号(->)来访问。错误代码报错截图...原创 2019-04-04 14:31:21 · 17789 阅读 · 0 评论 -
《C++:int main(int argc,char * argv[])》
C++有一种能够让程序访问命令行参数的机制,就是主函数的参数与常用的有所不同。int main(int argc,char * argv[])argc为命令行中参数个数,包括命令名本身(也就是程序名exe)。argv是一个指向char的指针数组,其中的指针指向命令行参数,例如,argv[0]就是指向命令行参数中的第一个字符串,默认为命令名本身(也就是程序名exe)。下面用...原创 2019-04-19 14:50:48 · 3390 阅读 · 0 评论 -
C++:枚举
枚举是一个被命名的整型常数的集合,枚举在日常生活中很常见,例如表示星期的星期一、星期二、星期三、星期四、星期五、星期六、星期天就是一个枚举,个数有限。枚举定义的是新类型,可以像其他基本类型一样定义枚举量。枚举的定义enum 枚举名{ 标识符1=整型常数, 标识符2=整型常数, ... 标识符N=整型常数,};例如:enum Colors{r...原创 2019-06-12 14:31:09 · 1302 阅读 · 0 评论 -
全局变量和局部变量初始化问题
总结这里需要分清一个事实,是变量系统都会默认给初始化,只不过全局变量默认初始化为0,而局部变量被初始化为随机数,这个随机数用不了,后面会验证。现在,我们要讨论的是程序猿或者程序媛需不需要给全局变量和局部变量赋初值的问题。因为全局变量的初始值是系统默认的且是可使用的,因此,全局变量一般不需要自己去赋初值,不过为了养成良好的代码习惯,最好还是赋初值,定义的全局变量在代码中未被使用,编译器也不...原创 2019-08-23 16:08:42 · 11899 阅读 · 0 评论 -
C++:如何获取系统日期和时间?
struct tm{ int tm_sec; // seconds after the minute - [0, 60] including leap second int tm_min; // minutes after the hour - [0, 59] int tm_hour; // hours since midnight - [0, 23]...原创 2019-09-02 11:29:17 · 1746 阅读 · 0 评论 -
C++:常见类型的字节数、位数以及最大和最小值
在使用C++的过程中,常见的数据类型有bool、char、unsigned char、wchar_t、short、int、unsigned int、long、unsigned long、float、double、size_t、string等。这些类型的变量创建时,系统会自动分配一定的内存用于存储数据。数据存储是以“字节”(Byte)为单位,数据传输大多是以“位”(bit)为单位,也就是二进制中的0...原创 2019-09-04 13:57:40 · 11805 阅读 · 1 评论