C++学习笔记系列三
来源:互联网 发布:历史股价数据 编辑:程序博客网 时间:2024/06/06 13:25
1、new/delete扩展
- 使用new表达式时发生的三个步骤:
- 调用名为operator new的标准库函数,分配足够大的原始的未类型化的内存,以保存指定类型的一个对象
- 运行该类型的一个构造函数去初始化对象
- 返回指向新分配并构造的构造函数对象的指针 使用
- delete表达式时,发生的步骤:
- 调用对象的析构函数
- 调用名为operator delete的标准库函数释放该对象所用的内存
2、C++的输出输入流
- 标准输入输出流:cin 和 cout 对象是有缓冲区的,对于cin可以通过函数cin . ignore 清空cin 的缓冲区。有两个参数,第一个是要忽略的大小,第二个是结束符,如果要清空整个流的缓冲区,则一般使用 ignore(std::numeric_limits<std::streamsize>::max(), '\n')
它在头文件 #include <limits>中。
- Ctrl + d 结束输入,Ctrl + c 关闭程序。
- 1、标准输入输出流 -- 头文件<iostream> cin/cout/cerr-- printf/scanf
- 2. 文件输入输出流 -- 头文件<fstream> ifstream/ofstream/fstream fprintf fscanf fopen fwrite fclose
- ifstream / fstream 要求文件存在,(要输入),通过 tellg( )获取当前游标位置,seekg()偏移游标位置。除了getline 获取一行外,当文件较大时,也可以用 read( ) 要获取多长数据(字节数)
- ofstream 不要求文件必须存在,否则及创建。通过 tellp( )获取当前游标位置,seekp()偏移游标位置。
- 对于文件流,在操作完成之后,要close关闭。
- 打开方式: in/ate
- out/trunk/app
- binary
- 3. 字符串流 -- 头文件<sstream> istringstream/ostringstream/stringstream sscanf sprintf
- 字符流不用关闭
- istringstream输入流,把字符串类型转成其他类型--->可以用来读取配置文件
- ostringstream输出流,把其他类型转成字符串类型 --->将整形数据准换成字符串(多用)。
- stringstream,相互转换都可以。
3、流的状态
- badbit 系统级故障,不可恢复 ---> bad( )
- failbit 可以恢复的错误 ----> fail( )
- eofbit 碰到了文件结尾 ---->eof( )
- goodbit 有效状态 ---->good( )
- 查询流的状态
- cin.bad()
- cin.fail()
- cin.eof()
- cin.good()
- 重置状态 cin.clear()
4、文件输入输出流 <fstream>
- 第一个容器 vector -->在 std 里面,
数组: vector ---> 动态数组,可以动态扩容。
方法是:
1、先根据当前容量capacity扩展空间,开辟出 2 * capacity 的空间。
2、再把原来空间的元素全部复制到新空间里面去。
3 、在在末尾添加新元素
4、最后回收原来的空间。
vector <int> vex;
vec.size() --->当前数组存放了的大小
vec.push_back() --->向数组里方数据。
vec.capacity(); -->容量-->可以存放的个数
vec.reserve(100); -->设定最大值,先开空间,推荐这样使用。
- ifstream 文件输入流类型。
ifstream 文件输入流要求文件是存在的。
eg:
- string word;
- while(ifs >> word) //因为word是一个字符串,故输入也默认情况下以空格作为分隔符。
ifstream ifs("a.txt")
string word;
ifs>>word //默认情况下 >> 是以空格作为分隔符的
getline(ifs,line) //可以读取一行
vextor<string> lines;
lines.push_back(line); --->将文件内容,放到vector 容器里面了。
---> ifs.close(); //关闭文件
- 输出流,ofstream
ofstream ofs(“a.out”)
//文件输入流要求文件是存在的,而输出流,不要求,没有则创建一个。
输入流有些函数是 以g结尾的,输入流以p结尾的。
文件模式
ios::in 打开文件做读操作
ios::out 打开文件做写操作,会删除原有数据
ios::app 在每次写之前找到文件尾
ios::trunc 打开文件时清空已存在的文件流
ios::ate 打开文件后立即定位到文件末尾 --->正对输入流
ios::binary 以二进制模式进行IO操作
- 针对文件输入输出流来说,也需要文件存在
ss.str(); -->输出缓冲区的内容。
- 字符串流stringstream
sprintf( ); -->拼接字符串
阅读全文
0 0
- C Primer Plus 学习笔记系列之(三)
- 《C Primer Plus》 学习笔记系列之(三)
- C++学习笔记系列三
- 机器学习系列笔记(三)
- C语言系列学习笔记
- c语言学习笔记三
- C语言学习笔记<三 >
- C/C++学习笔记(三)
- C++Primer学习笔记《三》
- Objective C学习笔记(三)
- UML/ROSE学习笔记系列三:名词解释
- OpenCV学习笔记系列(三)
- Android Fragment系列学习笔记之三
- OllyDbg破解系列学习笔记(三)
- WebService学习笔记系列(三)
- 【学习笔记】系列三:Linux安装APR
- game design原理系列学习笔记(三)
- jQuery源码学习笔记系列(三)
- POJ1862 Stripies (贪心)
- effective C++ 条款九解读
- ios编译ffmpeg
- Dell电脑如何设置Fn键和其它功能键的组合
- 学习shell脚本之前的基础知识
- C++学习笔记系列三
- linux中普通用户修改密码出现(passwd:Authentication token manipulation error)
- HDU1087 Super Jumping! Jumping! Jumping!
- linux开机启动自动执行某个脚本
- Friend-Graph(暴力枚举)
- 用 Python 实现每秒处理 120 万次 HTTP 请求
- RxJava基础使用
- mybatis配置
- 算法学习之枚举--熄灯问题POJ1222EXTENDED LIGHTS OUT