感觉应该会很好使用
比如 有些题 应付作者 对输入奇奇怪怪的输入癖好…
还可以用开分解 句子成单子 一组string数据分解为 int[]型
过来填个坑 补充点东西
- stringstream 创建完成后要重复使用 一定要清楚 st.clear();百度一下有两种这种全面点
- getline();的使用一般前面 都需要配合 getchar(); 要不然读取完组数会直接吧enter当作数据吞掉
- 例如: t组内有k行 但是每行 内容数量未知这样就必须在 k的循环中 在getline(); 前面加上getchar();
代码如下
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<sstream>
#include<algorithm>
using namespace std;
int main()
{
int n;
string str,s[100];
getline(cin,str);
//获取一行数据
//(cin,string,char) 输入 存取的地方 终止的字符
stringstream st(str); //会按照空格对str进行分段
//并流入st
int ans=0;
while(st>>s[ans]) //将 分段后内容流入
// s[](数组就行 char/string/int)中
ans++;
for(int i=0;i<ans;i++)
cout<<s[i]<<endl;
getline(cin,str,'&');
cout<<str<<endl;
getline(cin,str,'*');
cout<<endl<<str<<endl;
//& * 后内容不会被写入str
return 0;
}
例题: uva11827(反正我是打不开…官网的自己vj拉一个吧 还时不时submit failed)
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<sstream>
#include<algorithm>
using namespace std;
long long gcd(long long a,long long b)
{
if(b==0)
return a;
else
return gcd(b,a%b);
}
int main()
{
long long a[105],t;
cin>>t;
getchar();
while(t--)
{
long long ans=0,maxn=-1;
string str;
getline(cin,str);
stringstream st(str);
while(st>>a[ans])
{
ans++;
}
for(int i=0;i<ans;i++)
{
for(int j=i+1;j<ans;j++)
{
/*
long long c=a[i],d=a[j];
while(d^=c^=d^=c%=d);*/
maxn=max(maxn,gcd(a[i],a[j]));
}
}
cout<<maxn<<endl;
}
return 0;
}