猥琐男学c++ 第三课

来源:转载

2.1 标准输入输出设备

说的就是C++ iostream类,这些类可以从标准的输入输出设备中读取和写数据,所谓标准的输入输出设备,您可以认为它就是一个可以接收也可以显示数据的设备,这样它就是标准输入输出设备了,比如,控制台,文件,和其他一些设备,同理标准输出设备就是可以输出数据的东西,标准输入设备就是可以输入数据的东西。

为了使用iostream中的函数和全局变量,需要包含如下的头文件:
#include <iostream>
这里包含一个cout的对象,他接受标准输出的数据,说白了它就是用来输出数据的一个方法。
我们可以用cout<<"hello"来输出一个字符数组,这里之所以要说是字符数组,是因为C++里面有一个专门用来处理字符串的类性,string为了和这个区分开来,一般在C++中用引号括起来的都叫字符数组,字符串一般是指string类的子类或者什么的。

<< 这个符号在C/C++中也代表移位操作符,之所以在这里表示"发送到"的意思是因为用了操作符重载,这个我们以后再说,您只要知道操作符重载能改变某些操作符在特定条件下的功能就行了。

2.2 命名空间(名称空间)

相信只要是编过程序的,对名称空间应该不陌生,其作用就是为了预防命名冲突,比如您的文件里有一个叫GetName的方法,然后您又引用了一个外部的库,里面也有一个叫GetName的方法,悲剧了。那么当您调用GetName方法的时候,程序到底是执行您自己写的GetName还是调用您引用的外部库中的GetName呢?这就像几个班有相同名字的学生一样的,我们得用一个标识,比如3年一班的猥琐男,2年2班的猥琐男,这样就分的清楚了到底谁是谁了。

有很多库,您引用进来了,但是调用方法的时候提示没找到,很可能是您没有包含这个方法的名称空间。

引用名称空间的语法:
using namespace std
这样您在您的整个代码文件都可以用std中的变量和方法了。到这里您只需要简单的了解这些就可以了,命名空间的详细描述,我会在以后给出的。

2.3 程序的结构

c++开始的时候会执行一个特殊的main()方法。程序的主要代码就放在这个main()方法中。而且mian方法总是返回一个int类型的值。C++语言书写比较自由,除了一些极少的情况,编译器会忽略换行和空格,我们需要用“;”,来标识一条语句的结束。

C++用2中方式的注释,一种是块注释
/*
中间的都是被注释的内容
*/
一种是行注释,一次注释掉一行的内容:
// 一次只能注释一行的内容

2.4 经典入门系列值hello world

说了这么多,我们来写一个简单的小程序吧:
先用emacs来创建一个文件,这个编辑器您随意。

敲入下面的代码:

用GUN G++编译一下:

默认输出a.out,直接运行好了。

注意这里<<的组合使用方法,而且一条语句占多行,endl是指最后的换行。需要注意的是,字符数组在C++里面系统会自动添加一个“0”来做一个字符数组的结尾,所以实际长度会多一位出来,这个注意一下。同样字符数组中也有转义,用/来做,比如//输出一个反斜杠,/n是换行,/b是退格,/t是tab,这个不解释每种语言都一样的。

这里注意一下代码前面的//: c02,以及最后的//:~,这种格式,实际上也是文档注释,和c#中的///起到异曲同工的作用,都是用工具来生成文档的

下面再给一个有操作符的输出的列子,这个例子以各种格式输出一些数字

编译后运行:

dec,hex,oct这种几十操作符号,输出函数自动会识别,它本身不会被输出,浮点类型不用指定float,系统也会自动识别。对于char(27)则是显示的类型转换咯,找到他对应的ascii码。

还有一个要注意的是,c++中的字符数组是可以自动拼接的,中间是可以有换行的,比如下面的程序

运行如下,字符都是直接拼接起来了:

2.5 数据的读取

有了输出自然就有输入了格式如下:
cin>> cin的意思就是console in的意思了。下面给您看一个例子就行了:

输出结果:(注意这里会停在一个地方等待您的输入)

很简单吧。

2.6 关于调用其他的程序

看下面这段代码:

我们先用下面的命令把之前的那个程序编译的名称换一下:

然后我们执行这个call.cpp:

呵呵 ,怎么样实现了一个程序调用另一个程序,在system中您可以写一些命令,比如python,date之类的系统支持的命令
其引用的库是<cstdlib>这个是C语言的库,这里看以看到,在C++中引用c语言也是相当简单的事情。

2.7 简要介绍string类型

其实C++中的string'主要是用来方便对字符数组的操作,因为一些操作字符数组的方式比较麻烦,所以C++帮我们把这些麻烦的事情封装在了string中供我们使用。以后我们会专门来介绍一下string这里只是初步了解一下。

要使用string,您必须引用<string>,其名称包含在std名称空间中:看下面的例子:

运行后:

同样这里的+被重载成连接字符串的功能了。

2.8 说说文件的读写吧

上次说了文件也是标准的输入输出流,现在来说说怎么操作文件吧,在C++中文件操作被封装的非常简单了。

为了打开文件进行读写您必须引入<ifstream>库,ifstream其实已经包含了iostream,但是一般我们还是显示的天骄iostream,这样会清晰一点。先看下面的一个例子:(这个while中的getline()会返回一个bool的值表示是否读完,您不要告诉我,你不知道while循环是什么意思)

运行以后,看看iostreamTest.cpp这个文件,已经完全被替换成string.cpp文件中的内容了:(注意最下面的文件名,我没有骗你)

怎么样相当的简单吧。注意所有的这些in和out都是相对于缓冲器的,这里的ifstream,这是一个in,意思是从文件in到缓冲区,所以实际上我们认为是读文件。这个ofstream是指从缓冲区out到文件中,所以我们理解其实的写文件。这个很拗。。。

2.9 本次的最后说一下容器vector

这是个容器类型,所谓容器类型就是一个相当于数组一样的东西,只是这个东西的里面的数据类型是需要预先指定的,比如您这样声明:
Vector<string> stringArray;那您的这个stringArray里面只能放string类型的数据,其他类型您放进去就得给您报错。实际上vector是一个模版,您可以理解成C#中的List<T>泛型,它有一些方法,比如push_back是向容器尾部追加数据,insert是插入元素,等,这里您不必详细了解,以后慢慢来。

我给您看一个例子您就基本上理解,vector的基本操作了:注意这里用了size()是表示vector当前里面存在多少个元素。这个不难理解。for循环我也不相信您看不懂。

看看运行结果:

这些乱码是之前中文注释,无视掉吧请,我也不知道为什么回事乱码。文件格式保存的有问题吧可能是

我的文件保存的编码是GB2312的不知道为什么还是乱码,有点无解,这里不是讨论这个的,以后我解决了专门说说这个好了(大坑一个)

下面再给个例子就结束这一课了:

看一下输出结果:这里可以看出vector类型是可以这样直接赋值的:words[i]="["+word[i]+"]",同时还有一个知识点是in>>word这样的方法,默认是一次读一个单词,以后咱们可以有很多方式控制一次读的东西,这个以后再说:

可以看出vector是通用的数据暂存器,器功能非常好。。

好了这次就到这里,下次见吧。。


分享给朋友:
您可能感兴趣的文章:
随机阅读: