面经——算法题数据输入输出

135 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

算法题目中会出现很多其奇怪该的输入输出需求,这篇帖子总结一下。

最基本的

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

C语言的空指针直接用0