万能头文件
几乎包含了常用的所有头文件,不过在国内oj中,poj,hdu 不支持这个函数,这几个oj的编译器问题,其他国外的oj,还有台湾的oj都支持,CF,Topcoder,CCFCSP也都支持
#include<bits/stdc++.h>
ios::sync_with_stdio(false)
ios::sync_with_stdio(false);
//这段语句可以来打消iostream的输入 输出缓存,可以节省许多时间,使效率与scanf与printf相差无几
int转string
ostringstream os; //构造一个输出字符串流,流内容为空
int i = 12;
os << i; //向输出字符串流中输出int整数i的内容
cout << os.str() << endl;
string转int
- std::stoi/stol/stoll等函数
cpp
stoi(str, 0, 2); //将字符串 str 从 0 位置开始到末尾的 2 进制转换为十进制
- 标准库中atoi函数,对于其他类型也都有相应的标准库函数,比如浮点型atof(),long型atol()等等
cpp
string s = “12”;
int a = atoi(s.c_str());
- 采用sstream头文件中定义的字符串流对象来实现转换
cpp
istringstream is(“12”); //构造输入字符串流,流的内容初始化为“12”
int i;
is >> i; //从is流中读入一个int整数存入i中
##分割字符串
cpp
void split(const string& s,vector<int>& sv,const char flag = ' ') {
//利用将字符串s绑定到输入流istringstream,然后利用getline进行切割
sv.clear();
istringstream iss(s);
string temp;
while (getline(iss, temp, flag)) {
sv.push_back(stoi(temp));
}
return;
}
for循环输出容器的内容
int main() {
string s("123:456:7");
vector<int> sv;
split(s, sv, ':');
for (const auto& sb : sv) {//C11新特性,更方便地循环输出容器的内容
cout << sb << endl;
}
return 0;
}
常用输出格式控制
setprecision(n)
可控制输出流显示浮点数的数字个数。
C++默认的流输出数值有效位是6,所以不管数据是多少,都只输出六位。
如果setprecision(n)
与setiosflags(ios::fixed)
合用,可以控制小数点右边的数字个数。
setiosflags(ios::fixed)
是用定点方式表示实数,setiosflags(ios::scientific)
是用指数方式表示实数;如果合用,可以控制指数表示法的小数位数。
代码 | 含义
-|-
dec| 十进制
hex| 十六进制
oct| 八进制
setiosflags(ios::uppercase)| 十六进制大写输出
setiosflags(ios::lowercase)| 十六进制小写输出
setiosflags(ios::fixed)| 固定的浮点显示
setiosflags(ios::scientific)| 指数表示
setprecision(n)| 设置显示小数精度为n位
setfill(c)| 设置填充字符c
setw(n)| 设置域宽为n个字符
setiosflags(ios::left)| 左对齐
setiosflags(ios::right)| 右对齐
setiosflags(ios::skipws)| 忽略前导空白
STL的简单使用
以vector<int>
为例,其他容器、数据类型基本相同
vector<int> v= {1,2,3,,4,5,6,7};
v.push_back(8);//v={1,2,3,4,5,6,7,8};
vector<int>::iterator p;//迭代器p
p=v.begin();//*p=1;*next(p)=2;
p=v.end();//*prev(p)=8
string s="012345";
s.insert(3, "^");//s=012^345
getline
istream& getline (istream& is, string& str, char delim);
将流is
如cin
以delim
分割存入str
中。delim
缺省值为换行符。
值的注意的是,当使用cin
读入数据后,有一个回车留在缓冲区,此时执行的第一个getline得不到数据。