提取字符串中的数字并分别保存

在论坛看到一位朋友提的,很简单的东西,就大概写了个,权当顺便复习下字符操作函数。
题目:C++里一个字符串,比如"100,10"或者"100 10",怎么样才能把100和10分别提取出来,保存到2个数组里或者保存到分开的2个字符串里?
这里有两种做法,一种是考虑提取出来的数是否为0开头,如果是0开头则去掉前面的0;另一种是不考虑这个问题。这只是在最后的输出上加不加一个判断和处理的问题。
源程序分别如下:
//(1)去掉数开始的0的
#include
#include
#include
#include
using namespace std;
int main()
{
string Str,Str1;
vector S;
cout<<"Input your string:";
getline(cin,Str);
for(string::size_type i=0;i!=Str.size();++i)
{
if(isdigit(Str[i]))
{
Str1.push_back(Str[i]);
}
else if(Str1.size()!=0)
{ S.push_back(Str1);
Str1="";
}
}
if(Str1.size()!=0)
{
S.push_back(Str1);
}
for(vector ::size_type j=0;j!=S.size();++j)
{
vector ::size_type k=0;
while(k
{
k++;
}
for(;k
cout<
cout<<" ";
}
cout<
return 0;
}
//(2)不考虑数开始的0的
#include
#include
#include
#include
using namespace std;
int main()
{
string Str,Str1;
vector S;
cout<<"Input your string:";
getline(cin,Str);
for(int i=0;i!=Str.size();++i)
{
if(isdigit(Str[i]))
{
Str1.push_back(Str[i]);
}
else if(Str1.size()!=0)
{ S.push_back(Str1);
Str1="";
}
}
if(Str1.size()!=0)
{
S.push_back(Str1);
}
for(int j=0;j!=S.size();++j)
cout< <<" ";
cout<
return 0;
}
字符操作函数有时候还真是少不了用,把cctype头文件里的一些贴个在下面再好好看看。

  1. isalnum(c) 如果c是字母或数字,则为true
  2. isalpha(c) 如果c是字母,则为true
  3. iscntrl(c) 如果c是控制字符,则为true
  4. isdigit(c) 如果c是数字,则为true
  5. isgraph(c) 如果c不是空格,但可打印,则为true
  6. islower(c) 如果c是小写字母,则为true
  7. isprint(c) 如果c是可打印的字符,则为true
  8. ispunct(c) 如果c是标点符号,则为true
  9. isspace(c) 如果c是空白字符,则为true
  10. isupper(c) 如果c是大写字母,则为true
  11. isxdigit(c) 如果c是十六进制数,则为true
  12. tolower(c) 如果c是大字字母,则返回其小写字母形式,否则直接返回c
  13. toupper(c) 如果c是小写字母,则返回其大写字母形式,否则直接返回c
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值