当题目给定一些话并且需要你提取出其中的数字时
该代码作用如下图
方法一:输入为string类型
#include<algorithm>
#include<cstring>
#include<sstream>
#include<vector>
using namespace std;
int i2s(string a)//将字符串转化为整形
{
int b;
stringstream s;
s<<a;
s>>b;
return b;
}
int main()
{
string st;
vector<string> s;
getline(cin,st);//输入一句话,如“26 and 23 are siblings”
stringstream water(st);
int i=0;
string temp;
while(water>>temp){//把分隔开的字符串依次存入数组
s.push_back(temp);
}
for(int j=0;j<s.size();j++) cout<<s[j]<<endl;
cout<<"--------"<<endl;//分割线
for(i=0;i<s.size();i++)
{
if((s[i]!="0" && i2s(s[i])!=0) || s[i]=="0") cout<<s[i]<<" "<<i2s(s[i])<<endl; //若字符串参数为非数字字符串时,i2s返回值为0,所以要判断一下
}
}
方法二:输入为字符数组类型
#include<iostream>
#include<cstring>
#include<stdio.h>
using namespace std;
int main()
{
char str[1000];
gets(str);
int len=strlen(str);
for(int i=0,j=0;i<len;i++)//双指针
{
j=i;
while(j<len && str[j]!=' ')
j++;
for(int k=i;k<j;k++)
{
printf("%c",str[k]);
}
printf("\n");
i=j;
}
}