• c++速成,适合有c基础的朋友(2)


    5.I/O流————对象和类入门
      a.流和基本文件
         流 是一个由字符构成的流(flow)。如果流向程序,被称为输入流。如果流出程序,则称为输出流。输入流可能由键盘或文件提供,输出流可以流向屏幕或文件。
         cin和cout就是输入输出流的例子。
         如果定义了一个输入流:in_stream 这个流来源与某个文件,则:
         int the_number;
         in_stream >> the_number;
         类似的,如果定义了out_stream输出到某个文件中:

         out_stream << "the number is" << the_number;
         要用一个流来从文件获取数据(或将数据发送到文件中),首先要声明流,然后将流与文件连接起来。可将与流连接起来的文件视为这个文件的值,改变值即改变
         连接文件。
         声明方式:#include<fstream>
                   using namespace std;
                   ifstream in_stream;
                   ofstream out_stream;
         连接方式:in_stream.open("infile.dat");   //可以暂时理解为c语言中的结构体类似的语法。
         完成了连接,可以利用输入流读取数据:
                   int number_1 , number_2;
                   in_stream >> number_1 >> number_2;
         程序的真实文件名只在open函数中使用,其余的时候都使用与之相关的流名。
         eg: #include<fstream>
             using namespace std;

             int main()
             {
     
             using namespace std;
             ifstream in_stream;
             ofstream out_stream;
             int number_1 , number_2 ,number_3 ,number_4;
     
             in_stream.open("infile.dat");
             out_stream.open("outfile.dat");

             in_stream >> number_1 >> number_2 >> number_3 >> number_4;
             out_stream << "these are four numbers:" << number_1 << number_2
                        << number_3 << number_4 << endl ;
     
             in_stream.close();    
             out_stream.close();    //将打开的文件关掉
     
             }
      b.类与对象入门
        流其实就是对象。对象是一个变量,和它关联的既有函数,也有数据。与对象关联的函数称为成员函数。
        如果一个类型的变量是对象,这个类型就是类(class)。类是一种类型,他的对象就是变量。
        ifstream类和ofstream类都有一个名为fail的成员函数,在打开文件后调用:
        in_stream.fail();
        如果文件打开失败,会返回一个boolean类型的ture值,用以判断文件是否打开。
        eg: int_stream.open("stuff.dat");
            if(in_stream.fail())
            {
                   exit(1);          //终止程序
            }
        exit语句:%1.使用时要声明:#include<cstdlib>
                  %2.如果因为错误而调用exit,实参为1,其余为0。
      c.流I/O工具
        %1.用流函数格式化输出
           可以用于规范程序的输出格式
           eg: cout.setf(ios::fixed);  //ios::scientific输出的是科学计数法
               cout.setf(ios::showpoint);
               cout.precision(2);
           之前的用于控制小数的输出。
           一个十分常用的函数是输出空格的函数:
               cout.width(n);               //会打印n-1个空格。                                                
        %2.操纵元
           这里介绍两个操纵元:setw和setprecision
           setw(n)和cout.width(n)有相似的作用,只是用法不相同
           eg:cout << "Start" << setw(4) <<"1,2,3";
           setprecision可以用来控制输出小数小数点的情况。
           eg:cout.setf(ios::fixed);
              cout.setf(ios::showpoint);
              cout << "$" << setprecision(2) << 10.3;
           要使用操纵元,要包含#include<iomanip>。
           流文件可以作为函数的实参,唯一的限制是必须采用传引用参数。
      d.字符I/O
        %1.get和put成员函数
           get函数允许程序读取输入的一个字符,并将它存储到char类型的变量中。每一个输出流都提供了get成员的函数。
           eg: char letter;
               cout.get(letter);
           注:这样的输入方式不会忽略任何的字符,包括换行符和空格符。对这一点要十分注意,以免造成错误。
           put函数与get类似,只是put函数用于输出字符型变量。
           eg: cout.put('a');
        %2.eof成员函数
           in_stream.eof();       //end of file;
           这是一个boolean型函数,如果程序越过了文件的末尾,则返回true。可以用来判断是否已经到了文件尾。
        %3.预定义字符函数
           这里介绍toupper和tolower:
           要使用这两个函数必须包含:#include<cctype>
           toupper函数返回小写字母对应的大写字母,tolower函数则恰好相反。需要注意的是,这两个函数返回的是int值,故:
           cout << static_cast<char>(toupper('a'));
    6.数组
      a.数组入门
      %1.声明和引用数组:
         int score[5];  //数组的声明方式与c相同。
         int score[5],max,min;   //可以与普通变量一起声明。
         数组的引用:
         int n=2;
         score[n+1]=3;  //同样与c语言相同。
         注意:数组的引索是从0开始的。编程时可以考虑将数组的长度设置为常量。
         eg:const int number_of_score = 5;
            int score[number_of_score];
         数组引索越界编译是不会报错,可能造成毁灭性的后果,请在引用是注意。
      %2.初始化数组:
         eg:int children[3]={2,12,1};
         如果在声明一个数组时初始化它,可以省略数组的大小。
         eg:int children[]={2,12,1};
      b.函数中的数组:
      %1.索引变量作为函数参数
         如果函数的变量是int型的,那么:
         int a[4];
         int my_fuction(a[3])
      %2.整个函数作为函数的参数:
         函数可以获取整个数组作为数组的参数。作为形参的整个数组既不是一个传值调用函数,也不是一个传引用调用参数。而是一种新的形参,数组形参。
         eg:void fill_up(int a[],int size);
         int a[]是一个数组形参。在调用函数时,调用方式如下:
         int score[5];
         int number_of_score=5;
         fill_up(score,number_of_score);
         注意,如果函数中的数组形参发生改变,数组实参也会发生改变。因为实际传给函数的是数组第一个元素在内存中的地址。所以通常还需要一个int实参来表示数组的
         大小。
      %3.const参数修饰符
         如果要求在函数的过程中不希望数组被更改,可以使用const函数修饰符。
         eg:int my_fuction(const int a[],int number_of_a);   //这样的声明在a[]被修改时会编译报错。
      %4.返回数组的函数
         只用利用指针返回一个数组。
      %5.多维数组:
         多维数组基础:
         声明:eg: int array_number[100][100];
                    char array_symbol[100][100];
         多维数组作为函数变量
             形式为char array_symbol[][100]
             eg:   void display(char array_number[][100],int size_dimension_1);
             考虑到多维数组在内存中的存放方式,这样的方式就很容易理解了。
  • 相关阅读:
    HDU_1009_FatMouse' Trade
    WCF配置
    SQL Server ltrim(rtrim()) 去不掉空格
    安装VisualSVN Server 报"Service 'VisualSVN Server' failed to start. Please check VisualSVN Server log in Event Viewer for more details"错误.原因是启动"VisualSVN Server"失败
    WPF 设置回车触发按钮时间
    WPF:验证登录后关闭登录窗口,显示主窗口的解决方法
    无法获取链接服务器 "XXX" 的 OLE DB 访问接口 "SQLNCLI10" 的架构行集 "DBSCHEMA_TABLES_INFO"。该访问接口支持该接口,但使用该接口时返回了失败代码。
    The current identity ( XXXX) does not have write access to ‘C:WindowsMicrosoft.NETFrameworkv4.0.30319Temporary ASP.NET Files’.解决办法
    安装SQL sever2008时显示重新启动计算机规则失败,应该怎么解决?
    清楚数据库日志的方法
  • 原文地址:https://www.cnblogs.com/ustczd/p/4782718.html
Copyright © 2020-2023  润新知