C++学习笔记 2014-9-23
2014-09-23 18:51 想打架的蜜蜂 阅读(197) 评论(0) 收藏 举报1、每一个输入流都有一个名为get的函数,get函数允许程序读取输入的一个字符,将他存储到char类型的变量中,每个流都提供了get成员函数,不管是cin流还是输入文件流。和提取操作符不一样的是,get会读取下一个输入字符,而不管这个字符是什么如:
char charValue;
cin.get(charValue);如果输入的字符是空白字符,则程序读取空白字符,如果是换行符,则char获得的字符是\n
加入你提供以下两行的输入
AB
CD
也就是说,假如你在输入AB之后按回车,然后输入CD并按回车,结果
char c1,c2,c3;
cin.get(c1);
cin.get(c2);
cin.get(c3);
cl的值设置成'A',cl的值设置成'B',cl的值设置成'\n'也就是c3的值被设置成换行符
2、成员函数put,用于输出,put 允许你的程序输出一个字符,成员函数put取一个参数,如
cout.put('a');此语句将向屏幕输出一个字符。
3、putback成员函数
上面的get函数,读取完一个字符之后,值就不在该流中,使用成员函数putback。他获得一个char类型的参数,并将该参数的值放回输入流,
例如,下面的代码从与输入流fin连接的文件中读取字符,并将它们写到与输出流fout连接的另一个文件,代码一直读取字符,直到第一个空格:
fin.get(next);
while(next!=" ")
{
fout.put(next);
fin.get(next);
}
fin.putback(next);
注意:执行完这段代码之后,已经读取的空格仍然包含在输入流fin中,因为代码在读取了这个空格之后,又把他放回原来的输入流中,putback是将一个字符放到输入流中,而put是将一个字符放到输出流中。
4、每个成员函数都有一个名为eof的成员函数,他用于确定何时读完文件的全部内容,如输入流名为fin,fin.eof();如果程序越过输入文件的末尾,就满足这个表达式,表示已经到达末尾。
5、预定义字符函数
toupper可将小写字母转换成大写字母,tolower反之。这两个函数在同一个库中,该库具有头文件cctype,如果isspace函数的实参是一个空白字符,函数会返回true。空白字符是在屏幕显示为一个空白字符,其中包括空格符、制表符、和换行符'\n',不是空白符就返回false
6、touper和tolower返回int类型
C++都将字符当作整数来处理,这类似于int类型的数字,每个字符都指派了一个数字。用char类型的变量来存储字符时,计算机内存中存储的就是这个数字。在c++中可将char类型的值当作一个数字来使用,可将他放入int类型的一个变量中,还可以将int类型的一个数字存储到char类型的变量中。因此char类型既可以当作字符来使用也可以当作整形来使用。使用cctype中的函数的时候,这个细节就很重要。touper和tolower实际上返回的是int类型的值,而不是char类型的值,也就是说他们返回的是与实际字符相对应的一个数字而不是字符本身。如cout<<touper('A'),返回字母'A'指派的数字。
为了让计算机将touper和tolower返回的值当作char类型的值,需要指出自己需要char类型,如char c=touper('A'),或者采用强制类型转换如static_cast<char>(touper('a'))
7、继承
对象是一个具有成员变量的函数,而类是一种类型,他的变量就是对象,a是类b的派生类,是指类a具有类b的全部特性,但他还新增了一些特性
8、让流参数更加通用
如果想定义一个函数,要求它取一个输入流作为实参,并希望实参在某些情况下是cin流,在另一些情况下则是输入文件流,就应该使用istream类型的形参,但是输入文件流即使要作为istream类型的一个实参使用,也必须申明为ifstream类型。类似的输出也是一样用ostream.
9、函数的默认参数
如果一个函数如下:
void line(istream& in_stream=cin)
{
//////实现
}
像下面这样调用函数line(),就会取默认的实参,line(fin)就会取指定的参数fin,这种机制适合任何参数类型和任何数目的参数。这就是使用默认参数或者默认实参
如果有的形参提供了默认的实参,有的却没有,那么有默认实参的形参就必须统一放到参数列表的末尾,在参数列表中,如果有的形参有默认实参,有的则没有,那么在进行函数调用时,你要么提供数量极少的实参(为没有默认实参的所有形参提供实参),要么提供全部实参(与形参数目相同),如
void def(int arg1,int arg2,int arg3=-3,int arg4=-4)
{
////实现
}
函数调用时,可以传递2,3,4个参数