C++最全教程,C++进阶教程大全(收藏级)

一、前言

这套C++教程能够很好的帮助你入门,让你掌握C++基础并且打开通向高级C++工程师的大门,通俗易懂深入浅出是这套教程最大的特点,让你能够很轻松地学习C++,还有更多详细进阶教程等你!

C++最全教程,C++进阶教程大全(收藏级)_第1张图片

 

二、前面的相关教程

1.https://www.jianshu.com/p/8daec4f04d05

2.https://www.jianshu.com/p/f0b1f52abf77

3.https://www.jianshu.com/p/06dd41023471

4.https://www.jianshu.com/p/c443b461c9c4

5.https://www.jianshu.com/p/d02ba7ec3f30

6.https://www.jianshu.com/p/f93168dd6e2f

7.https://www.jianshu.com/p/491125176a1c

8.更多详细进阶视频教程也可以关注微信公众号  “C和C加加”  回复“ZXC”即可获取

三、IO流

流-------   一连串连续不断的数据集合。

1.流类和对象

输入流-从输入设备流向内存的流。

输出流-从内存流出设备的流。

内存缓冲区-用来存放流中的数据。

输入输出流程:键盘输入=》键盘缓冲区=(回车触发)》程序的输入缓冲区=》‘>>’提取数据

                        输出缓冲区=(缓冲满或endl)》‘<<’送到 显示器显示

输入/输出流类:

iostream:ios ,istream,ostream,iostream

fstream:ifstream,ofstream,fstream

strstream:istrstream,ostrstream,strstream

  • istream 是用于输入的流类,cin 就是该类的对象。
  • ostream 是用于输出的流类,cout 就是该类的对象。
  • ifstream 是用于从文件读取数据的类。
  • ofstream 是用于向文件写入数据的类。
  • iostream 是既能用于输入,又能用于输出的类。
  • fstream 是既能从文件读取数据,又能向文件写入数据的类。
  • istrstream 输入字符串类
  • ostrstream 输出字符串类
  • strstream 输入输出字符串流类

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzNjcwMTU3,size_16,color_FFFFFF,t_70

2.标准输入输出流

C++的输入/输出流库(iostream)中定义了4个标准流对象:cin(标准输入流-键盘),cout(标准输出流-屏幕),cerr(标准错误流-屏幕),clog(标准错误流-屏幕)

cerr 不使用缓冲区,直接向显示器输出信息;而输出到 clog 中的信息会先被存放到缓冲区,缓冲区满或者刷新时才输出到屏幕。

cout 是 ostream 类的对象,ostream 类的无参构造函数和复制构造函数都是私有的,所以无法定义 ostream 类的对象。

使用>>提取数据时,系统会跳过空格,制表符,换行符等空白字符。所以一组变量输入值时,可用这些隔开。

输入字符串,也是跳过空白字符,会在串尾加上字符串结束标志\0。

int  x;
double y;
cin>>x>>y;
//输入 22 66.0  两个数之间可以用空格、制表符和回车分隔数据
char str[10];
cin>>str;//hei ren  字符串中只有hei\0

 

输入流中的成员函数

get函数:cin.get(),cin.get(ch)(成功返回非0值,否则返回0),cin.get(字符数组(或字符指针),字符个数n,终止字符)

char c = cin.get();//获取一个字符
while ((c = cin.get()) != EOF)//循环读取,直到换行
{
	cout << c;
}


char ch;
cin.get(ch);
while (cin.get(ch))//读取成功循环
{
	cout << ch;
}

char arr[5];
cin.get(arr, 5, '\n');//输入 heiren  结果 heir\0

getline函数:cin.getline(字符数组(或字符指针),字符个数n,终止标志字符)

读取字符知道终止字符或者读取n-1个字符,赋值给指定字符数组(或字符指针)

char arr0[30],arr1[30],arr2[40];
cin>>arr0;//遇到空格、制表符或回车结束  "Heiren"
cin.getline(arr1,30);//字符数最多为29个,遇到回车结束 " Hello World"
cin.getline(arr2,40,'*');//最多为39个,遇到*结束 "yar"
//输入 Heiren Hello World
//yar*123

cin.peek() 不会跳过输入流中的空格、回车符。在输入流已经结束的情况下,cin.peek() 返回 EOF。

ignore(int n =1, int delim = EOF)

int n;
 cin.ignore(5, 'Y');//跳过前5个字符或Y之前的字符,‘Y’优先
 cin >> n;
 //输入1234567  ->  67    1234567Y345->345

//输入2020.2.23
int year,month,day;
cin >> year ;
cin.ignore() >> month ; //用ignore跳过 '.'
 cin.ignore() >> day;
cin.ignore();   //跳过行末 '\n'

 cout<< setfill('0') << setw(2) << month ;//设置填充字符'\0',输出宽度2
 cout << "-" << setw(2) << day << "-" << setw(4) << year << endl;

putback(char c),可以将一个字符插入输入流的最前面。

输出流对象

插入endl-输出所有数据,插入换行符,清空缓冲区

\n-输出换行,不清空缓冲区

cout.put(参数) 输出单个字符(可以时字符也可以是ASII码)

格式化输出

iomanip 中定义的流操作算子:

*不是算子的一部分,星号表示在没有使用任何算子的情况下,就等效于使用了该算子,例如,在默认情况下,整数是用十进制形式输出的,等效于使用了 dec 算子

C++最全教程,C++进阶教程大全(收藏级)_第2张图片

C++最全教程,C++进阶教程大全(收藏级)_第3张图片

C++最全教程,C++进阶教程大全(收藏级)_第4张图片

流操作算子使用方法:cout << hex << 12 << "," << 24;//c,18

setiosflags() 算子

setiosflags() 算子实际上是一个库函数,它以一些标志作为www.meimeitu8.com参数,这些标志可以是在 iostream 头文件中定义的以下几种取值,它们的含义和同名算子一样。

C++最全教程,C++进阶教程大全(收藏级)_第5张图片

C++最全教程,C++进阶教程大全(收藏级)_第6张图片

多个标志可以用|运算符连接,表示同时设置。例如:

cout << setiosflags(ios::scientific|ios::showpos) << 12.34;//+1.234000e+001
  • 1.

如果两个相互矛盾的标志同时被设置,结果可能就是两个标志都不起作用,应该用 resetiosflags 清除原先的标志www.rsxedu.com

cout << setiosflags(ios::fixed) << 12.34 << endl;
cout << resetiosflags(ios::fixed) << setiosflags(ios::scientific | ios::showpos) << 12.34 << endl;

ostream 类中的成员函数:

C++最全教程,C++进阶教程大全(收藏级)_第7张图片

setf 和 unsetf 函数用到的flag,与 setiosflags 和 resetiosflags 用到的完全相同。

cout.setf(ios::scientific);
cout.precision(8);
cout << 12.23 << endl;//1.22300000e+001

你可能感兴趣的:(C++最全教程,C++进阶教程大全(收藏级))