https://en.cppreference.com/w/cpp/io/manip
参考一下,这一部分比较基础,所以就一遍过
eg1:转16进制
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int n;
cout << "请输入一个整数:";
cin >> n;
cout << "十六进制输出为:" << showbase << hex << n << endl;
return 0;
}
eg2:表格对齐
cpp
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
// 表头
cout << left << setw(10) << "姓名"
<< right << setw(5) << "年龄"
<< setw(8) << "成绩" << endl;
// 学生信息
cout << left << setw(10) << "张天一"
<< right << setw(5) << 19
<< setw(8) << 85.5 << endl;
cout << left << setw(10) << "Alice"
<< right << setw(5) << 21
<< setw(8) << 90.0 << endl;
cout << left << setw(10) << "欧阳中天"
<< right << setw(5) << 22
<< setw(8) << 78.2 << endl;
return 0;
}
eg3:设置精度
cpp
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
double num;
cout << "请输入一个浮点数: ";
cin >> num;
//设置精度为3
cout << fixed << setprecision(3);
cout << "保留三位小数:" << num << endl;
//恢复默认精度
cout.unsetf(ios::fixed);
cout << setprecision(6); //恢复默认精度
cout << "恢复默认精度" << num << endl;
return 0;
}
e g4:小数点
cpp
//保留小数点后3位
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
double num;
cout << "请输入一个浮点数:";
cin >> num;
cout << fixed << setprecision(3);
cout << "保留3位小数的输出结果为:" << num << endl;
return 0;
}
eg5://值传递:不会真正交换主函数中的变量
//地址传递,使用指针,交换主函数变量的值
//引用传递,最简单最安全的方式,直接交换主函数变量
cpp
#include<iostream>
using namespace std;
//值传递:不会真正交换主函数中的变量
void swapByValue(int a ,int b){
int temp = a;
a = b;
b = temp;
}
//地址传递,使用指针,交换主函数变量的值
void swapByAddress(int *a,int *b)
{
int temp = *a;
*a = *b;
*b = temp;
}
//引用传递,最简单最安全的方式,直接交换主函数变量
void swapByReference(int& a,int& b)
{
int temp = a;
a = b;
b = temp;
}
int main()
{
int x =10,y = 20;
//值传递
cout << "初值: x = " << x <<", y = " << y << endl;
swapByValue(x,y);
cout << "main中值传递后: x = " << x <<", y = " << y << endl;
//地址传递
swapByAddress(&x,&y);
cout << "main中地址传递后: x = " << x <<", y = " << y << endl;
//引用传递
swapByReference(x,y);
cout << "main中引用传递后: x = " << x <<", y = " << y << endl;
return 0;
}
eg6:函数重载
cpp
//重载(overload)函数就是在同一个作用域内几个函数名字相同但形参列表不同。一个函数名对应多个不同的代码。
#include<iostream>
using namespace std;
void add(int x,int y)
{
cout << "int:" << x + y << endl;
}
void add(float x)
{
cout << "float: " << 10 + x << endl;
}
double add(double x,double y)
{
return x + y;
}
int main()
{
add(10.2);
add(1,3);
return 0;
}
e g7:默认参数
cpp
#include<iostream>
using namespace std;
void greetings(string name,string greeting = "Hello")
{
cout << greeting << "," << name << endl;
}
int main()
{
greetings("Alice");
greetings("Bob","Hi");
return 0;
}
e g8:函数重载
cpp
#include<iostream>
#include<cmath>
#define PI 3.14
using namespace std;
double caculateArea(double radius)
{
return PI * radius * radius;
}
double caculateArea(double length,double width)
{
return length * width;
}
double caculateArea(double a ,double b,double c)
{
double s = (a + b + c)/2.0;
return sqrt(s*(s-a)*(s-b)*(s-c));
}
int main()
{
cout << "圆的面积" << caculateArea(5.0) << endl;
cout << "矩形面积" << caculateArea(4.0,6.0) << endl;
cout << "三角形面积" << caculateArea(3.0,4.0,5.0) << endl;
return 0;
}
eg9:字符串
cpp
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s;
//cin >> s; //无法读取含有空格的字符串
getline(cin,s); //这个就可以读取一行的
cout << s.length() << endl;
cout << s.front() << "," << s.back() << endl;
for(auto& ch : s)
if(ch == 'a') ch = 'A';
cout << s << endl;
return 0;
}