查看: 589|回复: 0

[原创图文] C++try与catch cout控制符 简单介绍string fstream sstream类

[复制链接]

35

主题

47

帖子

3

精华

解密专家

Rank: 16

学币
380
荣耀
0
rank
0
违规
0
发表于 2021-2-24 17:30:07 | 显示全部楼层 |阅读模式
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语句,代表是一种注释该函数可能有几种类型被抛出。
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类

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));
}



温馨提示:
1.如果您喜欢这篇帖子,请给作者点赞评分,点赞会增加帖子的热度,评分会给作者加学币。(评分不会扣掉您的积分,系统每天都会重置您的评分额度)。
2.回复帖子不仅是对作者的最好奖励,还可以获得学币奖励,请尊重作者的劳动成果,拒绝做伸手党!
3.发广告、灌水回复等违规行为一经发现直接禁言,如果本帖内容涉嫌违规,请点击论坛底部的举报反馈按钮,也可以在【投诉建议】板块发帖举报。
学逆向论坛-免费的逆向学习论坛
关闭

论坛公告上一条 /1 下一条

快速回复 返回顶部 返回列表