C++语法基础

C++语法基础

1、c++中提供了布尔型数,false表示假,true表示真。

2、输入输出流

输入:cin

cin>>x:从输入流中提取一个数存入变量x

cin的常用的api:

  1. cin.get():读取一个字符,并返回读取的字符(空格和换行也算一个有效字符)

  2. cin.peek():查看下一个字符,但并不读取(空格和换行也算一个有效字符)

  3. cin.ignore(n):忽略输入流中的n个字符

  4. cin.read(char*str,streamsize count ):从输入流中读取指定个数的字符,第一个参数是一个字符型的指针用于指向一个字符型数组,stramsize是一种有符号整型(具体与int的不同可以去csdn上查),count表示读取字符的数量

  5. cin.putback(char c):用于将一个字符c重新放入到输入流中,以便再次读取。

输出:cout

cout<<x:输出变量x

cout的常用api:

  1. cout.put(char c):输出字符

  2. cout.write(char*s,streamsize n ):输出指定数量n的字符,输出的字符为s中的字符,s需要以null结尾

  3. cout.width(int width):用于设置输出字段的宽度的方法,如果输出的宽度小于指定的宽度,会默认用空格进行填充(填充在其左侧)以达到设置的宽度,也可以通过cout.fill来设置填充的字符。

  4. cout.fill(char x):设置填充字符

格式输出控制符:

首先输出格式控制符在iomanip的头文件内

std::setw(int n)设置字符宽度为n
std::left左对齐
std::right右对齐
std::internal内部对齐
std::dec使用十进制
std::hex使用十六进制
std::oct使用八进制
std::(no)showbase(不)显示符号或前缀
std::(no)showpoint(不)显示小数点后的0
std::(no)showpos(no)显示正号
std::fixed固定精度
std::scientific科学计数法
std::setprecision(int n)设置浮点数精度为n,保留小数点后几位
std::setfill(char x)设置填充字符为c
std::defaultfloat将浮点数的输出格式恢复为默认格式(取消先前设置的任何输出格式)

左右对齐一般与setw一同使用(当输出的字符数量大于设定的值时便不会有效了)

  1. 左对齐(std::left):左对齐是指文本在指定的字段宽度内向左对齐。如果文本长度小于字段宽度,则在文本右侧填充空格以达到指定宽度。

  2. 右对齐(std::right):右对齐是指文本在指定的字段宽度内向右对齐。如果文本长度小于字段宽度,则在文本左侧填充空格以达到指定宽度。

  3. 内部对齐(std::internal):内部对齐是指文本在指定的字段宽度内进行对齐,但是对齐的方式与左对齐和右对齐有所不同。对于正数,内部对齐的行为与右对齐相同,即在左侧填充空格。而对于负数,内部对齐的行为与左对齐相同,即在右侧填充空格。这样可以使得负数的符号位与数字部分对齐,从而使整体看起来更加美观。

fixed控制格式输出,固定其为小数的模式进行输出

一般情况下,设置的输出控制格式的作用范围为永久性有效,直至相同的控制符进行重新设置或者程序结束

但有部分是临时性设置,如fixed和scientific等,只在其所在的输出语句有效。

八进制通常以0开头

十进制是默认显示样式,前面没有前缀

十六进制前缀为0x

效果展示:

        

判断下面两行代码的不同?

cout << setprecision(3) << y << endl;

cout << fixed << setprecision(3) << y << endl;

  1. cout << std::setprecision(3) << y << endl;

    • 这条语句设置了浮点数的小数点后精度为3位,但没有指定输出格式。

    • 结果会根据浮点数的大小来决定是否采用科学计数法。

  2. cout << std::fixed << std::setprecision(3) << y << endl;

    • 这条语句设置了浮点数的小数点后精度为3位,并且使用了 std::fixed 控制符,指定了固定小数点表示法。

    • 结果将始终以固定小数点表示法显示,小数点后有3位数字,不会采用科学计数法。

综上:保留几位小数的做法: cout<<fixed<<setpresion(n)

输入输出缓冲区:

标准输入流(键盘输入)和标准输出流(屏幕输出)。

输入缓冲区 : 当向 输入流 写入数据时 , 数据首先被写入 输入缓冲区 , 而不是直接写入到程序中 ; 当 输入缓冲区 写满时 , 数据会一次性写入磁盘 ;

输出缓冲区 : 当 程序 向 文件 写出 数据时 , 数据首先被 写出到 输出缓冲区 , 这种缓冲机制可以减少磁盘 I/O 操作的次数 , 从而提高程序的性能 ;

命名空间

避免名字重复,见前缀可以解决重名问题

内存分配与内存回收

new 创建空间

格式:

//申请空间

int* ptr = new int; 2、类型指针 指针变量名 = new 类型(初始值)

Eg.

//申请空间并初始化

int* ptr2 = new int(1); 3、类型指针 指针变量名 = new 类型[元素个数]

Eg.

//申请连续的空间,空间大小为4*10=40*

int* arr = new int[10];

delete 释放new创建的空间

//释放单个空间

delete ptr;

delete ptr2;

2、delete[] 指针变量名 Eg.

//释放连续的多个空间

delete[] arr;

也可以利用其创建一个二维数组,二维数组可以理解为指针的指针

指针指向了一群一维数组

指针的指针则指向了所有的指针,存放了所有一位数组的起始位置

eg:生成一个nxn的二维数组

int **str=new int*[n];
for(i=0;i<n;i++)
{
    str[i]=new int[n];
}

引用

引用与指针类似,但引用不可以进行++,--

引用类似于起别名,在函数调用中,可以在函数中更改引用对象的值,但一个引用只可以作为一个变量的别名

引用代表给一个变量起别名,必须在定义时初始化,不能在定义完成后再赋值。(就是在引用定义时就必须交代清楚其的引用对象是谁)

内联函数

主要目的:提高函数的执行效率,使用inline定义函数即可将函数指定为内联函数,内联函数在编译时直接将函数体插入函数调用的地方,省去了普通函数调用时压栈、跳转和返回的开销。

inline 返回值类型 函数名(参数)

{

函数体;

}

函数重载

函数重载是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的形参列表(参数个数 类型 顺序)必须不同,常用来处理实现功能类似数据类型不同的问题

参数列表不同:函数的参数列表必须不同,至少有一个方面不同,包括参数的类型、数量或顺序。返回类型不是函数重载的条件。

异常

在 C++ 中,try 是异常处理机制的一部分。异常处理允许程序在运行时发生错误时,优雅地处理这些错误而不是直接崩溃。

try 块用于包含可能会抛出异常的代码片段。它的基本语法如下:

try {
    // 可能会抛出异常的代码片段
} catch (ExceptionType1 ex1) {
    // 处理 ExceptionType1 类型的异常
} catch (ExceptionType2 ex2) {
    // 处理 ExceptionType2 类型的异常
} catch (...) {
    // 处理其他类型的异常
}
  • try 块中包含的代码可能会抛出异常。

  • catch 块用于捕获并处理 try 块中抛出的异常。

  • catch 块后面可以跟一个括号,其中包含异常类型的名称,用于指定要捕获的异常类型。如果不需要访问异常对象,也可以省略异常类型。

  • 可以有多个 catch 块,每个 catch 块处理不同类型的异常。

  • 如果没有适合的 catch 块来处理抛出的异常,异常将会继续传播到调用栈的上一层。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值