摘要:
算法题中对于输入数据的处理
总结:
1. 有明确的的输入行数和每一行输入的个数:直接无脑cin就行
2. 没有明确的输入行数:利用整行读入函数
char c[1000];
scanf("%[^\n]",s);//一般都是读到换行符为止
或者
string str;
getline(cin,str,'\n');//第三个参数是自定义的分隔符
读入string或者char[]后转化为字符型串流,利用重载过后的 > > >> >>来逐个取出,如
#include <iostream>
#include <stdio.h>
#include <sstream>
#include <vector>
#include <string>
using namespace std;
void function() {
char c[1000000];
while (~scanf("%[^\n]%*c ", c))
{
int temp = 0;
int sum = 0;
istringstream s(c);
while (s >> temp)
{
sum += temp;
}
cout << sum << endl;
}
}
int main() {
function();
return 0;
}
或者
#define _USE_MATH_DEFINES
#include<iostream>
#include<algorithm>
#include<vector>
#include<cmath>
#include <sstream>
using namespace std;
int main() {
int num = 0;
int sum = 0;
string str;
while(getline(cin,str,'\n'))
{
sum=0;
stringstream strl(str);
while (strl >> num)
{
sum=sum+ num;
}
cout << sum << endl;
strl.clear();
}
}
3. 也可以用cin或者scanf的返回值作为判断结束的标志。
while(cin>>temp)
{
}
//或者
while(~scanf("%d",&temp))
{
}