文章目录
一、关于c++头文件
许久没有使用c++了,记录一下常用的固定公式。
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#include<string>
#include<sstream>
#include<algorithm>
#include<vector>
#include<queue>
#include<math.h>
#include<bitset>
#include<map>
#include<stack>
#include<iomanip>
using namespace std;
int constant;//全局变量
int main(){
}
二、关于语法
1.用惯了python,记得每句后面加分号,且要添加类型定义
int a=0;
2.循环
//for循环
for(int t=0;t<10;t++){
}
//while
while(true){
}
//do...while
do{
}while(true)
//switch..case
switch(grade){
case 'A' :
cout << "很棒!" << endl;
break;
case 'B' :
case 'C' :
cout << "做得好" << endl;
break;
case 'D' :
cout << "您通过了" << endl;
break;
case 'F' :
cout << "最好再试一下" << endl;
break;
default :
cout << "无效的成绩" << endl;
}
3.输入输出
//输入
cin>>a>>b;
//输出
cout<<"123"<<endl;
//特定输入循环
//字符串(%s)、整数(%d)、字符(%c)、浮点数(%f)
while(scanf("%d.%d.%d...%d",&a,&b,&c,&d)!=EOF){
}
//字符串输入,以空格/回车为结束
string a,b,c,d;
while(cin>>a){
} //若输入"hello world",循环体执行两次
while(cin>>a>>b>>c>>d){
} //输入"hello very happy world",循环体执行一次
//字符串输入,以行为单位
string tt;
getline(cin,tt);
4.typedef
typedef是替一个对象取一个别名,以此增强程序的可读性。
typedef int INT; //定义int类型的一个别名INT。注意:末尾的分号
三、关于string类型操作
#include<string>
//定义字符串
string ss="123456789";
string s1="555";
ss.append("ss");//在字符串后面追加“ss”->"123ss"
ss.append(&ss[0]);
ss.size();//返回int类型的字符串的长度
ss.empty();//判空
ss.substr(0,5);//获得字符串ss中从第0位开始的长度为5的字符串
ss.substr(6);//获得字符串ss中从第6位开始到结束的字符串
ss.find('2');//返回值是字母在母串中的位置(下标记录)(此处为1),如果没有找到,那么会返回一个特别的标记npos(此处为ss.npos)
ss.erase(10);// 从位置pos=10处开始删除,直到结尾
ss.erase(6, 4);//从位置pos=6处开始,删除4个字符
ss.erase(ss.begin()+10);//删除迭代器位置处的单个字符, 并返回下个元素的迭代器
ss.erase(ss.begin()+10, ss.end());//删除迭代器[first, last)区间的所有字符,返回一个指向被删除的最后一个元素的下一个字符的迭代器
/*下图描述*/
ss.begin();//函数返回一个迭代器,指向字符串的第一个元素
ss.end();//返回一个迭代器,指向字符串的末尾(最后一个字符的下一个位置)
ss.rbegin();//返回一个逆向迭代器,指向字符串的最后一个字符
ss.rend();//返回一个逆向迭代器,指向字符串的开头(第一个字符的前一个位置)
//连接两个字符串
cout<<ss+s1<<endl;
//倒转字符串
#include<algorithm>
reverse(ss.begin(),ss.end());
//如果出现“ error: too many arguments to function call, expected 1, have 2”的报错,则把“reverse”改为“::reverse”
四、int类型与string类型的互换
1.int—>string
//int转换为string类型
int a=12;
string aa=to_string(a);
//或者,此法只能一个字符一个字符的转换,不能转换二位数以上的整数
int a=2;
char re=a+'0';
2.string—>int
//string类型转为int类型
string ss="123";
//stoi(字符串,起始位置,2~32进制),将n进制的字符串转化为十进制。
int s1=stoi(ss,0,10);//从ss字符串的0位置开始,以十进制转化
//或者
int s2=0;
for(int i=0;i<ss.size();i++){
s2=s2*10+(ss[i]-'0');
}
五、关于math头文件中的常用函数
六、goto语句
goto label;
..
.
label: statement;
七、ASCII码转换
在计算机存储中,用ASCII码表示字符,如字符char a,b,及整形int m:
1.获取字符的ASCII码:(int)a 或 m = a;
2.获取ASCII码对应的字符:(char)a 或 a = m;
3.字符之间相加减,实质是对应的ASCII码相加减,结果为整形,如下列:
a - b 即a的ASCII码减去b的ASCII码,记为int k = a - b
结果:k
结果对应的字符:(char)k
转载:https://blog.csdn.net/jianyingyao7658/article/details/83443914?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-2&spm=1001.2101.3001.4242
八、进制转换
1.指定格式输出
//c++
cout << "35的8进制:" << std::oct << 35<< endl;
cout << "35的10进制" << std::dec << 35 << endl;
cout << "35的16进制:" << std::hex << 35 << endl;
cout << "35的2进制: " << bitset<8>(35) << endl; //<8>:表示保留8位输出
//c
printf("%05o\n",35); //按八进制格式输出,保留5位高位补零
printf("%03d\n",35); //按十进制格式输出,保留3位高位补零
printf("%05x\n",35); //按十六进制格式输出,保留5位高位补零
2.使用字符串流string,stream
#include<string>
#include<sstream>
(1)8,16->10(string—>int)
string s="20";
int a;
stringstream ss;
ss<<hex<<s; //以16进制读入流中
ss>>a; //10进制int型输出
(2)10->8,16(int—>string)
string s1,s2;
int a=30;
stringstream ss;
ss<<oct<<a; //10进制转成八进制读入流中,再以字符串输出
ss>>s1;
cout<<s1<<endl; //输出:36
ss.clear(); //不清空可能会出错。
ss<<hex<<a; //10进制转成十六进制读入流中,,再以字符串输出
ss>>s2;
cout<<s2<<endl; //输出:1e
3.itoa函数(int—>char)(除了2进制—>*进制)
#include <stdio.h>
#include <stdlib.h>
//函数原型
char *itoa(int value, char *str, int radix)
value 是被转换的整数
str 转换后存储的字符数组
radix 转换进制数,可以是 2, 8, 10, 16 等等
4.sprintf函数(int—>string)
当itoa不好使的时候,可以使用这个,功能更强大。
C++中sprintf()函数的使用详解
int your_number;
char itoa_str[60+1];
sprintf(itoa_str, "%d", your_number);
5.stoi函数(string—>int)(*进制—>十进制)
//函数原型
int stoi(const string &str, size_t* idx = 0, int base = 10)
str: 要转换的string
idx: 为size_t*类型,是从str中解析出一个整数后的下一个字符的位置
base: 指出string中要转换的数的进制,即str所代表的是个什么进制的数,如是base默认为10, 若base = 0, 表示由编译器自动判定str所代表的数的进制
//二进制——>十进制
int re=stoi("0001",0,2) //re=1
6.bitset(int/char/string—>bitset)(十进制—>二进制)
#include<bitset>
bitset<