1、try, catch和throw:
a)throw很像C语言的goto语句,但是throw不但能再本函数内跳转,还能跨函数跳转。
b)抛出的异常只有在try语句块中才能被catch语句捕获。throw抛出后,可以被在最近主调函数的catch捕获。
c)try和catch语句必须联合不能单独使用,用来捕获异常。
d)catch之后的括号中含有数据类型参整,参数类型说明了忘捕获的异常的具体类型
e)catch中的参数类型乏后的参数是可选的。如果有参数,厕算常被捕获时,抛出的异常对象会初始化参数。
f)catch可以使用万能类型,(...)
g)异常声明:在函数头后面加throw语句,代表是一种注释该函数可能有几种类型被抛出。
该语句拋出一个异常。异常是一个表达式,其值的类型可以是基本类型,也可以是类。
try {
语句组
}
catch(异常类型) {
异常处理代码
}
catch 可以有多个,但至少要有一个。
不妨把 try 和其后{}中的内容称作“try块”,把 catch 和其后{}中的内容称作“catch块”。
try...catch 语句的执行过程是:- 执行 try 块中的语句,如果执行的过程中没有异常拋出,那么执行完后就执行最后一个 catch 块后面的语句,所有 catch 块中的语句都不会被执行;
- 如果 try 块执行的过程中拋出了异常,那么拋出异常后立即跳转到第一个“异常类型”和拋出的异常类型匹配的 catch 块中执行(称作异常被该 catch 块“捕获”),执行完后再跳转到最后一个 catch 块后面继续执行。
抛出对应的类型,必须要有对应类型的捕获
2.cout支持的格式控制符有:(函数需要头文件iomanip)
dec 设置以十进制输出整数
hex 设置以十六进制输出整数
oct 设置以八进制输出整数
setbase(n) 设置指定的进制(只包含上面三种)
setfill(c) 设置填充字符为c
setprecision(n) 设置实数的显示精度为n位
setw(n) 设置字段宽度为n
setiosflags(ios::fixed) 设置实数以固定的小数位输出
setiosflags(ios::scientific) 设置实数以科学计数法显示
setiosflags(ios::left) 设置数据左对齐
setiosflags(ios:right) 设置数据右对齐
setiosflags(ios::skipws) 与setfill(c)相反,取消前导的字符
setiosflags(ios::uppercase) 将输出的字符转为大写
setiosflags(ios::showpos) 输出正数时显示+
'resetflags() 取消已设置的输出格式状态
cout<<hex<<i<<endl;//输入出来的整数将会是16进制
cout<<setbase(8)<<i<<endl;//输入出来的整数将会是8进制
cout<<setiosflags(ios::left)<<name<<numb<<//输入出来的将会左对齐
3.简单介绍string类
string类类似于CString,功能上面并没有上面相差
#include<string>
#include<iostream>
using namespace std;
int main()
{
string str = "@qq.";
str = str + "com";
const char* p = str.c_str();//可以将一个对象赋值给一个指针
cout << p << endl;
int i=str.find('c');//查找字符,找不到返回npos,找到返回字符位置
if (i == string::npos)
cout << "没有找到" << endl;
cout << str.substr(0, i) << endl;//从0的位置打印到i
cout << str.substr(i) << endl;//拆分字符串,类似于CString中的mid函数,从i的位置打印到最后
}
C++try与catch cout控制符 简单介绍string fstream sstream类
5、stringstream:把多种类型的数据生成格式化字符串(sstream头文件)
C++:格式化
stringstream ss;
ss << "姓名" << d.name << "学号" << d.numb;
string str = ss.str();
cout << str;
C语言:格式化
char s[256];
sprintf(s, "%s,%d", d.name, d.numb);
cout << s;
6、fstream:(ifstreanm和ofstream)//这个东西就类似于fopen(fstream头文件)
a)构造函数可以打开文件,用open成员函数也可以打开文件;
b)write和read成员函数比fwrite和fread的好处是参数少
他没有使用void*类型,所以带入的时候需要强制转换类型
列如:做一个保存
ofsteream fs("vo");//打开vo文件,没有会自动创建
int nSize=m_viet.size(),i=0;
while(i>nSize)
{
Data &data=m_viet[i++];
fs.write((char*)&data,sizeof(Data));
}
|