本文已参与「新人创作礼」活动,一起开启掘金创作之路。
算法题目中会出现很多其奇怪该的输入输出需求,这篇帖子总结一下。
最基本的
cin和scanf(),输入时如果遇到空格,则当作分割符
获取一行
以换行为准的,中间有空格也要都读入进去。
#include <string>
string s;
getline(cin, s);//输入一个含有空格的字符串
cin.getline();//方法二
getline是C++标准库函数,C语言中可以使用
#include <stdio.h>
char str[20]; // 定义一个字符数组,大小为20个字节
gets(str); // 将用户输入的字符串(可以包含空格)存储到字符数组str中,以回车结束输入
以逗号或空格或什么分隔的值
C++标准库中的sstream提供了比ANSI C的<stdio.h>更高级的一些功能,即单纯性、类型安全和可扩展性。在本文中,我将展示怎样使用这些库来实现安全和自动的类型转换。
#include <sstream>
#include <string>
string s;
getline(cin, s);//输入字符串,获取到一行
stringstream ss(s);//初始化字符串流
string tmp;
while (getline(ss, line, ' '))//按空格分割
{
}
转换函数
字符串转各种数据类型,可以利用如下函数
int stoi(const strings str, size_t* pos = 0, int base = 10)
long stol(const strings str, size_t* pos = 0, int base = 10)
float stof(const strings str, size_t* pos = 0)
double stod(const strings str, size_t* pos = 0)
int a=stoi(tmp,0,2);
还可以利用字符串流,更加方便
string tmp;
stringstream ss(s);
int a;
a<<ss;
输入到末尾
cin是个对象,重载<<运算符有返回值,返回值为EOF时,输入到结尾,退出循环。
while(cin>>str){
}
保留小数
#include <iomanip>//需要头文件
double a=1.2232
cout<<setiosflags(ios::fixed)<<setprecision(2)<<;
//输出 1.22
然后再输出实数类型变量即可以保留2位小数输出了
整体保留
cout<<setiosflags(ios::fixed);
//输出1.2