zoukankan      html  css  js  c++  java
  • 提取字符串中的数字并分别保存

    在论坛看到一位朋友提的,很简单的东西,就大概写了个,权当顺便复习下字符操作函数。
    题目:C++里一个字符串,比如"100,10"或者"100 10",怎么样才能把100和10分别提取出来,保存到2个数组里或者保存到分开的2个字符串里?
    这里有两种做法,一种是考虑提取出来的数是否为0开头,如果是0开头则去掉前面的0;另一种是不考虑这个问题。这只是在最后的输出上加不加一个判断和处理的问题。
    源程序分别如下:
    //(1)去掉数开始的0的
    #include<iostream>
    #include<string>
    #include<vector>
    #include<cctype>
    using namespace std;

    int main()
    {
    string Str,Str1;
    vector<string> 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<string>::size_type j=0;j!=S.size();++j)
    {
    vector<string>::size_type k=0;
    while(k<S[j].size()-1&&S[j][k]=='0')
    {
    k++;
    }
    for(;k<S[j].size();++k)
    cout<<S[j][k];
    cout<<" ";
    }
    cout<<endl;
    return 0;
    }


    //(2)不考虑数开始的0的
    #include<iostream>
    #include<string>
    #include<vector>
    #include<cctype>
    using namespace std;

    int main()
    {
    string Str,Str1;
    vector<string> 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<<S[j]<<" ";
    cout<<endl;
    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
    更多原创技术内容,可以通过公众号「闷骚的程序员」订阅:
    闷骚的程序员
  • 相关阅读:
    Unity3D 系统宏
    Mac OS—苹果搭建Android开发环境
    CocoaChina六年了,记我的这六年——六年汇总
    我的程序员之路(8)——北京第三家公司工作第一年总结
    Unity插件研究院之ResourceChecker
    Unity3D 插件大全
    MAC中开发Unity3D
    MySql安装过程(以验证)【网络资料】
    .net—— webservice的新建、发布、使用(最全、最简单)【原创】
    EF 链接MySql 建立数据模型
  • 原文地址:https://www.cnblogs.com/mazhuang/p/1641650.html
Copyright © 2011-2022 走看看