字符串从流中读入使用起来非常方便,特别是在高精度算法当中,不过效率不可观,应当酌情使用,下面介绍两种方法
C++语言
stringstream
头文件:#include<sstream>
#include<iostream>
#include<sstream>
using namespace std;
int main()
{
string s;
while(getline(cin,s))
{
int x;
stringstream ss(s);
while(ss>>x)
cout<<x<<endl;
}
return 0;
}
C语言
sscanf
头文件:#include<cstdio>
定义函数 int sscanf (const char *str,const char * format,........);
函数说明
sscanf()会将参数str的字符串根据参数format字符串来转换并格式化数据。格式转换形式请参考scanf()。转换后的结果存于对应的参数内。
返回值
成功则返回参数数目,失败则返回-1,错误原因存于errno中。 返回0表示失败 否则,表示正确格式化数据的个数 例如:sscanf(str,"%d%d%s", &i,&i2, &s); 如果三个变成都读入成功会返回3。 如果只读入了第一个整数到i则会返回1。证明无法从str读入第二个整数。
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int main()
{
int x;
string a;
while(cin>>a)
{
// sscanf(a.c_str(),"%d",&x);
// printf("%d\n",x);
int len=a.size();
for(int i=0;i<len;i+=5)
{
sscanf(a.substr(i,min(len-i,5)).c_str(),"%d",&x);
printf("%d\n",x);
}
}
return 0;
}