异常
异常程序代码错误的时候产生的一种错误, 在其他语言中,如python, 在程序运行时如果有错误的话就会抛出异常,控制台上会爆出红色的错误信息,而c++没有, 只是将退出状态码设置为不是0,代表程序不是正常退出,这就使我们追踪bug有一定的影响
异常捕获
当我们觉得程序可能在哪个代码块上会出现异常的时候可以用try来对异常进行捕获, 防止该错误影响到程序的执行,
try{
// 异常捕获
autoresult = do_something();
}catch(exception err){
//处理该异常
}catch(...){
// 异常处理
}
exception
是所有异常的父类,可以使用该类来接收异常, 也可以使用 ...
, … 可以接收所有异常,
抛出异常
throw
可以使用这个关键字给程序抛出异常,跳转程序运行,提醒开发人员,如
int a = 10;
int b = 0;
if (b == 0){
throw string("被除数不能为0");
}
int c = a / b;
noexcept
用在函数上,说明这个函数不会抛出异常,如果出现异常了,编译器也运行通过编译
输出
输出布尔数据
在c/c++中,在对bool类型的数据做输出的时候,打印的是 0 、1 ,如果希望看到的是 true 和 false ,那么可以使用 boolalpha 操作符。
bool flag = false;
cout << "flag的值是:" << flag <<" 添加操作符后:"<<boolalpha << flag << endl;
十进制、
八进制、
十六进制` 输出 ,默认输出十进制, 使用 dec oct hex 关键字可以将十进制数字转为八进制或十六进制
cout <<"十进制:" << dec <<9 << endl; 9
cout <<"八进制:" << oct <<9 << endl; 011
cout <<"十六进制:" << hex <<10 << endl; //0xa
setprecision
输 出浮点数,选择输出小数位,
double a = 1.23645785578852589;
cout << setprecision(5)<<" a ="<<a << endl; // 1.2364
setprecision 可以控制输出的小数位, 如果使用默认的输出的话,最多只会输出6位数字
文件操作
文件操作有三种常用类, 读,写, 读写,
ofstream 表示输出文件流,用于创建文件并向文件写入信息。
ifstream 表示输入文件流,用于从文件读取信息。
fstream 可读可写
文件操作模式:
ios::app 追加模式。所有写入都追加到文件末尾
ios::ate 文件打开后定位到文件末尾。
ios::in 打开文件用于读取。
ios::out 打开文件用于写入。
ios::trunc 如果该文件已经存在,其内容将在打开文件之前被截断,即把文件长度设为 0。
fstream file{"../test.txt" , ios::in};
// 打开当前目录先的test.txt 以只读的方式
is_open()
在打开文件后可以通过该方法判断是否成功打开了该文件, 如果成功,则为true,反之
获取文件内容, getline()
getline 可以获取文件的一行内容, 在该函数中可以接收两个参数,第一个是打开文件的对象, 第二个是要赋值的变量, 如:
string content;
fstream file{"../test.txt" , ios::in};
getline(file, content)
它会获取一行内容赋值给 content 变量, 如何获取全部内容呢,可以使用while 循环来循环获取
string content;
fstream file{"../test.txt" , ios::in};
while(getline(file, content)){
cout << content << endl;
}
这样,这样循环获取内容会将数据替换掉, 到最后content 变量 只留下最后一行的数据
getline 也可以接受三个参数,
string test;
getline(f , line)
stringstream ss;
ss.clear();
ss << line;
while (getline(ss, test, '#')){
cout << test << endl;
}
\这种情况是接收 字符流, 在c++中没有 split 可以直接操作字符串, 在c++中使用字符流才能对字符串进行切割,
将 line 中的字符内容 重载到 stringstream 变量 ss 中, 然后就可以使用getline 对该条内容通过 ‘#’ 来进行切割了,
写入
需要在打开文件对象中指定该文件对象的操作, ios::app 就是往文件中写内容
fstream file{"../test2.txt",ios::app};
if(file.is_open()){
cout << "正常打开文件"<<endl;
//写入数据
file << ",hi c++";
//写入换行
file << endl;
//写入结束
file.close();
}
通过 << 运算符可以将后面的数据添加到文件中