面向对象的C++入门


学完此节便掌握了基本知识,
掌握了C++基本知识,
便可以入门了。

入门C++

异常

异常是程序在执行期间产生的问题。C++ 异常是指在程序运行时发生的特殊情况,比如尝试除以零的操作。
异常提供了一种转移程序控制权的方式。C++ 异常处理涉及到三个关键字:try、catch、throw。

异常定义

  1. 异常:发现错误,不会处理。

    struct MyException : public exception//自定义异常struct 和class 权限不同
    {
      const char * what () const throw ()//重写继承虚函数
      {
        return "C++ Exception";//string -> 转 char*   .c_str();
      }
    };
    try//下面代码可能出现异常(错误) 包含代码块
      {
      //若干操作……中存在异常
        throw MyException();//抛出异常
        //抛出异常必须处理
      }
      catch(MyException& e)//捕获此类异常
      {
        std::cout << "MyException caught" << std::endl;
        std::cout << e.what() << std::endl;
      }
      catch(std::exception& e)//捕获异常 并处理异常
      {
        //其他的错误
      }
      catch(……)//其它异常……
      {
      //exception e,exception *e,exception &e(推荐);生命周期不同
      }
    
  • throw: 当问题出现时,程序会抛出一个异常。这是通过使用 throw 关键字来完成的。
  • catch: 在您想要处理问题的地方,通过异常处理程序捕获异常。catch 关键字用于捕获异常。
  • try: try块中的代码标识将被激活的特定异常。它后面通常跟着一个或多个 catch 块。
  1. 栈解旋:异常被抛出后,从进入try块起,到异常被抛掷前,这期间在栈上构造的所有对象,都会被自动析构。析构的顺序与构造的顺序相反,这一过程称为栈的解旋(unwinding).
  2. 异常接口声明(Qt有效):参考
    void function() throw(int,char,…) 只能抛出int 或char类型。
  3. 异常继承多态:
    传智博客图

输入输出

输出分类

  1. 标准I/O: 对系统指定的标准设备的输入和输出。即从键盘输入数据,输出到显示器屏幕。这种输入输出称为标准的输入输出,简称标准I/O。
  2. 文件I/O: 以外存磁盘文件为对象进行输入和输出,即从磁盘文件输入数据,数据输出到磁盘文件。以外存文件为对象的输入输出称为文件的输入输出,简称文件I/O.
  3. 串I/O:对内存中指定的空间进行输入和输出。通常指定一个字符数组作为存储空间(实际上可以利用该空间存储任何信息)。这种输入和输出称为字符串输入输出,简称串I/O。
  4. C++编译系统提供了用于输入输出的iostream类库。
ios抽象基类
istream
ostream
iostream

在这里插入图片描述
5. 程序执行过程

在这里插入图片描述

标准输入输出

标准输入输出不常用……随用可以随差……了解就可以

  1. cin.functionX()参考这里

    //标准输入流对象cin,重点掌握的函数
    cin.get() //一次只能读取一个字符
    cin.get(一个参数) //读一个字符
    cin.get(两个参数) //可以读字符串
    //链式编程
    char char1, char2, char3, char4;
    cin.get(char1).get(char2).get(char3).get(char4);
    
    cin.getline()//cin.getline(buf,1024);cin.getline()
    //1、属于istream流,而getline()属于string流,是不一样的两个函数
    //2、当同时使用cin>>,getline()时,需要注意的是,在cin>>输入流完成之后,getline()之前,需要通过
    str="\n";
    cin.ignore(n)//忽略缓冲区当前字符,n忽略字符数,默认一个
    cin.peek()//偷窥下缓冲区的数据
    cin.putback()//将数据放回缓冲区
    
  2. cin>>

    . cin>>
    该操作符是根据后面变量的类型读取数据。
    输入结束条件 :遇到Enter、Space、Tab键。
    对结束符的处理 :丢弃缓冲区中使得输入结束的结束符(Enter、Space、Tab)
    
  3. cout

    cout.flush() //刷新缓冲区 Linux下有效
    cout.put("A") //向缓冲区写字符
    char buf[1024] = "AA"
    cout.write(buf,strlen(buf)) //从buffer中写num个字节到当前输出流中。
    
  4. 格式化输出
    a. 控制符格式化输出
    b.使用流对象输出

    //流成员
    int number = 99;
    cout.width(20);
    cout.fill('*');
    cout.setf(ios::left);
    cout.unsetf(ios::dec); //卸载十进制
    cout.setf(ios::hex);
    cout.setf(ios::showbase);
    cout.unsetf(ios::hex);
    cout.setf(ios::oct);
    cout << number << endl;
    //控制符
    int number = 99;
    cout << setw(20)
    	<< setfill('~')
    	<< setiosflags(ios::showbase)
    	<< setiosflags(ios::left)
    	<< hex
    	<< number
    	<< endl;
    

文件输入输出

具体内容参见
头文件:#include < fstream >
在从文件读取信息或者向文件写入信息之前,必须先打开文件。ofstream 和 fstream 对象都可以用来打开文件进行写操作,如果只需要打开文件进行读操作,则使用 ifstream 对象。
open() 函数的标准语法,open() 函数是 fstream、ifstream 和 ofstream 对象的一个成员。
void open(const char *filename, ios::openmode mode);

当 C++ 程序终止时,它会自动关闭刷新所有流,释放所有分配的内存,并关闭所有打开的文件。但程序员应该养成一个好习惯,在程序终止前关闭所有打开的文件。
下面是 close() 函数的标准语法,close() 函数是 fstream、ifstream 和 ofstream 对象的一个成员。
void close();

#include <fstream>
#include <iostream>
using namespace std;
int main ()
{
   char data[100];
   // 以写模式打开文件
   ofstream outfile;
   outfile.open("afile.dat");
   cout << "Writing to the file" << endl;
   cout << "Enter your name: "; 
   cin.getline(data, 100);
   // 向文件写入用户输入的数据
   outfile << data << endl;
   cout << "Enter your age: "; 
   cin >> data;
   cin.ignore();
   // 再次向文件写入用户输入的数据
   outfile << data << endl;
   // 关闭打开的文件
   outfile.close();
   // 以读模式打开文件
   ifstream infile; 
   infile.open("afile.dat"); 
   cout << "Reading from the file" << endl; 
   infile >> data; 
   // 在屏幕上写入数据
   cout << data << endl;
   // 再次从文件读取数据,并显示它
   infile >> data; 
   cout << data << endl; 
   // 关闭打开的文件
   infile.close();
   return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Echo一

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值