Essential-CPP学习笔记-第一章

Essential CPP 学习笔记-第一章-C++编程基础

此笔记为学习EssentialCPP-侯捷译版-学习总结笔记,用于后续复习整理用。


  1.  Main 函数:

Main 函数为C++系统内置函数,标准语法为:

int main (){ //int 为main函数返回值,括号内为输入参数

...
return 0;    //return 0表示此函数运行正常

}

   2 . 头文件xxx.h:

       在C++中,若想调用某一class,需要首先引入包含这个class的头文件xxx.h; 引入头文件的格式为:

#include <iostream>

   *代码练习1,简单的输入输出功能

// EssentialCPP.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>  //输入输出头文件
#include <string>    //字符串头文件
using namespace std; //重要!定义命名空间,using namespace均为c++的标准关键字,
                     //std表示自定义的命名空间,规定类对象或变量的存在空间
                     //防止出现:两个命名相同的变量/类导致冲突发生
int main()
{
    string test_name;
    
    cout << "Please enter your name: \n";
    
    cin >> test_name;
    
    cout << "\n"
        << "Hello "
        << test_name
        << " goodbye";

    return 0 ;
}

 3.重要! 命名空间 using namespace std:

                    //重要!定义命名空间,using namespace均为c++的标准关键字,
                     //std表示自定义的命名空间,规定类对象或变量的存在空间
                     //防止出现:两个命名相同的变量/类导致冲突发生

             ! 标准程序库所提供的任何事物(包括string class,cout,cin这两个类对象)都被封装在std这个命名空间下

 4.构造函数初始化语法(除了使用assignment 标识符‘=’以外的一个赋值方法)- (Constructor initialization syntax)

  • 构造函数初始化语法:主要应用于对象需要多个初始化值的时候。
  • 语法为 #include <complex> 

                   complex <double> purei(0,7) ;

5. 设定常量语法(即初始化值赋值之后,这个数值不能在程序中被修改)

  • 语法为:const int max_tries=3;

6.  转义符: 由于\n,\t等已经包含特殊含义,因此若想在程序中显示\标识符时,使用\\转义符可以代表\

7.  复合赋值 :cnt++, ++cnt

int tries =0 ;
cout << "Are your ready to try :" 
     << ++tries <<"Times? \n"     //在执行语句之前,tries变量已经执行+1指令,此时值为2


cout <<"Are your ready to try :"
     <<tries ++ << "Times? \n"   //在执行语句之后,tries才将执行+1z指令,运行时值为1

8. 定义及初始化array 和vector (使用for loop)

  • 注意: 在初始化array和vector时候,需要首先确定其容量;
  • 注意: 使用for loop时候,第一次进入循环时,会进行一次判断。
  • 若想依次输出array或者vector内部的数据,可以使用for loop进行遍历(iterate)
//数组array:
const int seq_size=18 ;
int pell_seq [seq_size]; //定义整型数组



//vector
#include<vector>
vector<int> pell_seq (seq_size)  //定义整型vector


//从array或者vector内取出数据,或赋值
pell_seq [0] =1 ;
pell_Seq [1] =2;

//若向array 或者Vector内部添加元素,创建pell数列:
//Pell 数列为:1,2,5,12,29,70,169,408

for(int ix=2; ix<seq_size;ix++){
    pell_seq[ix]=2*pell_Seq[ix-1] + pell_seq[ix-2];
}

------------------------------------------------------------------------
//若预先不知道array的容量,可以在初始化的时候对array进行直接赋值,这样他会自动计算出元素数量:

int elem_seq_array[]{
  1,2,3,4,5,6,7,8,9,10
}

//vector与array之间的差异1:
vector这个变量知道自己的容量是多少,所以可以用以下方式遍历:
假设vector名称为 elem_seq_vector

for(int ix =0; ix<elsm_seq_vector.size();ix ++){
          cout<<pell_seq_vector[ix] <<"." ;
}



 

9. 使用指针-存取vector内部的某一个数值

  • 指针:代表某特定的内存地址,直接操作内存地址而不不直接操作对象;
  • 指针的用法:
//指针:

1. 定义一个名为 ival 的 int 对象
    int ival = 1024;

2.定义一个int型的指针对象:
   int *pi;

3. 将ival变量的内存地址存放在这个指针内(&取地址运算符):
   int *pi = &ival ;

4.若想取得“位于该指针所致之内存地址上的对象,在指针之前使用*即可”
  例如: 
   *pi=1024; -->就是在pi指针所指内存对象的值,将其设置为1024;

5.指针的复杂程度在:
  5.1 指针对象既可以让我们操作内存中的特定地址,也可以指针本身所指的对象值:
  例如:
       pi; ->这个是含有”内存地址“的指针对象 (门牌号)
      *pi ;->这个指的是内存地址存储的值 (地址里住的人),此处为1024

  5.2 在使用指针之前,必须提前知道这个指针对象所指地址内是否有需要的对象,否则会出错;
  重要:在使用指针前,需要判断指针内含地址是否为0,若为0,就不可进行提领(dereference)
      ->int *pi= 0;
      -> if (!pi){
          才可进行指针操作,否则出错
           }
//使用指针来操作vector内部数值:
//注意!指针的声明方法为: 变量类型 *pi; 例如:int *pi;

  vector<int> fibonacci,lucas,pell,triangular; //初始化vector
  vector<int> *pv = 0; //初始化指针

  pv= &fibonacci;      //将fibonacci地址赋予给指针
  pv= &lucas;

 

10. 文件的读写(程序执行结束时,写入文件一些数据,以便再次运行程序时进行调用)

#include <fstream>
//......//
//
------------------------写入模式------------------------------
1. 以输出模式开启一个文件:(打开文件时,文件已有内容会清除)

   ofstream outfile ("seq_date.txt"); //若文件存在,将被清零打开;若不存在,将被创建;

2. 以追加模式打开文件(在文件后边添加内容)
   
   ofstream outfile ("seq_date.txt", ios_base::app);

*  文件可能加载失败,因此在真正写入文件时,需要判断是否打开成功:

   if(! outfile){   //若打开成功,outfile=true; 失败就是false;
    }

3.重要: 若文件未能成功开启,需要将错误信息写入cerr,告知; cerr与cout都是输出函数
         区别是cerr会立刻输出-没有缓冲(bufferred)
  
    if(!outfile){
       cerr<<"Oops,Uable to save session data!\n"
     }
     else { 
        outfile <<“anson" << " "  //中间使用空格进行分隔
                <<"3 times" << " "
                <<num_right << endl ;

         }

---------------------读取模式-----------------------------------------------
若要读取文件,使用ifstream指令

1.读取文件信息的语法为:以读取模式(input mode),开启infile
          ifstream infile("test.txt");
            int num_tries = 0;
            int num_cor = 0;

        if(!infile){
            cerr<<xxx
             }
         else {
            string name;
            int nt;
            int nc;

        while(infile>>name) //while 循环每次都会迭代读取文件的下一行
                            //读取到最后一行时为FALSE,作为结束条件
        {   
           infile>>nt>>nc;  //由于文件格式为:anna 24 19,因此
                            //总次数存入nt,猜对的次数存入nc
           if (name == usr_name){
            cout<<"Welcome bace, "<<usr_name;
                <<"\n Your current score is "<< nc;
                << "Out of "<< nt <<"\nGood Luck!\n"
            
            num_tries =nt;
            num_cor = nc;
        }
        }
        }
       
---------------------同时读取并写入-----------------------------------------------
同时读取并写入,需要建立fstream对象,写入方式为append
        fstream iofile("seq_data.txt", ios_base::in|ios_base::app)
            if(!iofile){        
                cerr<< "Fail to load the file";
                }
            else{
                iofile.seekg(0); //开始读取之前,将文件定位至起始处
                }
    

---------------------总结-----------------------------------------------
读取并写入文件时步骤:
1. 包含头文件:#inculde <fstream>
2. 写入文件: ofstream outfile ("xxx.txt",ios_base::app)
3. 读取文件: ifstream infile ("xxx.txt")


 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MySQL是一款常用的开源关系型数据库管理系统,它支持多种操作系统和编程语言。本文将介绍如何安装MySQL Essential 5.1.36版本在Windows平台上使用。 1. 下载安装程序 首先,我们需要下载MySQL Essential 5.1.36-win32.msi安装程序,可以在官网或第三方下载站点下载。下载完成后,双击安装程序,开始安装。 2. 选择安装方式 选择默认安装方式即可,或按照个人需求自定义安装。在“选择配置类型”界面上,建议默认选择“完全安装”方式,并勾选“启动Windows服务”选项(这将使MySQL自动运行)。 3. 配置MySQL服务 在“确认安装”界面完成后,选择“执行”,将安装程序拷贝MySQL文件,并自动为MySQL生成一个服务。服务将在启动Windows服务时自动启动。 4. 安装过程小结 MySQL Essential 5.1.36-win32.msi安装程序非常简单,安装过程只需多次“下一步”,遵循默认设置进行即可。安装完成后,您可以在安装目录下找到MySQL的可执行文件和配置文件。现在您已经成功安装了MySQL Essential 5.1.36,可以开始使用它在自己的应用程序中使用了。 总体来说,MySQL Essential 5.1.36-win32.msi的安装非常简单,即使是对于没有数据库方面经验的用户也非常友好。顺利安装后,您可以在本地创建数据库和数据表时候,用MySQL对其进行管理,进行数据处理,抽取数据并生成报告。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值