《Essential C++》笔记一、C++编程基础

这篇博客介绍了C++的基础知识,包括类的声明与实现、main函数的作用、using namespace std的含义、构造函数、const的使用、运算符优先级、数组与向量的定义、指针操作、随机数生成以及文件的读写操作。通过实例详细讲解了每个概念,是C++初学者的入门指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

²  class的定义分为两部分,分别写于不同文件,其中之一是“头文件”,用来声明class所提供的各种操作行为,另一个是程序代码文件,包含这些操作行为的实现内容。

²  在C++中,main()返回0表示程序执行成功

²  关于usingnamespace std;语句

std是标准程序库所在的命名空间的名称。标准程序库所提供的任何事物都被封装在命名空间中。命名空间可以避免和应用程序之间发生命名冲突的问题。、

²  构造函数法:

定义一个复数:complex<double> purei(0,7);

²  const

C++中需要一些表示常量值的对象,此对象的内容在程序执行过程中不应有所更动[51] 。

²  运算符的优先级:

逻辑运算符NOT、!

算数运算符(*,/,%)

算数运算符(+,-)

相对关联运算符(>,<,<=,>=)

相对关联运算符(==,!=)

逻辑运算符AND

逻辑运算符OR

赋值运算符

²  Arrays与Vector的定义与初始化

定义Arrays

const int seq_size = 18;

int pell_seq[seq_size];

定义Vector

#include <vector>

vector<int> pell_seq(seq_size)

初始化Array的方式与数组相同

初始化Vector的方式:(利用一个已初始化德Array来初始化Vector)

int elem_vals [ seq_size ] = {

1, 2, 3, 3, 4, 7, 2, 5, 12, 3, 6, 10, 4, 9, 16, 5, 12,22

};

vector<int> elem_seq( elem_vals,elem_vales+seq_size);

²  指针

int *pi = &ival;

pi为int型的指针,语句将pi的初始值设为ival所在的内存地址

pi等于操控“指针对象”本身,而*pi等于操控pi所指的对象

一个未指定任何对象的指针,其内含地址为0,称之为NULL指针,任何指针都可以被初始化,或是令其值为0。

为防止对null指针进行提领操作,采用if( pi && … )的表达式来判断,而欲检验某指针是否为NULL,通常使用逻辑运算符NOT:if( !pi )

²  伪随机函数产生器rand(),srand()

srand()的参数是随机数产生器种子。每次调用rand(),都会返回一个介于0和“int所能表达的最大整数”之间的一个整数。如果将随机数产生器种子设为5,我们可以将随机数的返回值限定在0~5之间。这两个函数的声明位于cstdlib头文件中。

²  文件的读写操作

欲对文件进行读写操作,首先需要含入fstream头文件:

#include <fstream>

//以输出模式开启seq_data.txt

ofstream outfile(“seq_data.txt”);

如果指定的文件并不存在,就会自动产生一个新文件并作为输出之用;如果指定的文件已经存在,这个文件会被开启作为输出只用,而文件中原有的数据会被丢弃。

如果文件已经存在,但我们不希望覆盖原有的内容,就要采用追加模式来开启文件:

ofstream outfile( “seq_data.txt”, ios_base::app );

文件有可能开启失败,所以最好确定文件是否开启成功:

if (!outfile)

         //因为某种原因,文件无法开启

         cerr<< “Oops! Unable to save session data! \n”;

else

         // ok :outfile开启成功,接下来将数据写入

         outfile<< user_name << ‘ ‘

                     << num_tries << ‘ ‘

                     << num_right << endl;

endl是事先定义好的操控器,由iostream library提供。endl会插入一个换行字符,并清除输出缓冲区的内容。

如果要开启一个可读取的文件,我们可以定义一个ifstream对象,并将文件名传入。如果文件未能开启成功,ifstream对象会被核定为false。如果成功,该文件的写入位置会被定义为起始处。

ifstream infile( “seq_data.txt” );

int num_tries = 0;

int num_cor = 0;

 

if ( ! infile ){

         //由于某种原因,文件无法开启……

}

else{

         stringname;

         int nt;

         int nc;

         while(infile >> name )

//一旦读到文件尾端,读入的class object会被定义为false,作为结束条件。

         {

                   infile>> nt >> nc;

                   if( name == usr_name )

                   {

                            …

                   }

         }

}

要想同时读写一个文件,需要定义发fstream对象,并以追加模式开启:

fstream iofile ( “seq_data.txt”,ios_base::in|ios_base::app );

此时,文件位置会位于尾端,我们可以采用 iofile.seekg(0);将文件位置重置到起始处。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值