• ACM--string常见用法


    在ACM竞赛中,常常需要将读入的数字的每位分离出来,如果采用取余的方法,花
    费的时间就会太长,这时候,我们可以将读入的数据当成字符串来处理,这样就方便、省
    时多了。下面这个程序演示了求一个整数各位的和:

    #include <string>
    #include <iostream>
    using namespace std;
    int main(){
        string s = "123455";
        int sum = 0;
        for(int i = 0;i<s.length();i++){
            switch(s[i]){
                case '0':sum+=0;break;
                case '1':sum+=1;break;
                case '2':sum+=2;break;
                case '3':sum+=3;break;
                case '4':sum+=4;break;
                case '5':sum+=5;break;
                case '6':sum+=6;break;
                case '7':sum+=7;break;
                case '8':sum+=8;break;
                case '9':sum+=9;break;
            }
        }
        cout << sum;
    }

    sscanf函数很管用,它可以把一个字符串按你需要的方式分离出子串,
    甚至是数字。下面这个程序演示了sscanf函数的具体用法:

    #include <iostream>
    #include <string>
    using namespace std;
    int main(){
        char a[100],b[100],c[100];
        sscanf("122 3ss 3ww","%s %s %s",a,b,c);
        string s = a;
        cout << s <<endl;
        int p,l,k;
        sscanf("122 $122$333","%d $%d$%d",&p,&l,&k);
        cout << p <<endl;
        cout << l <<endl;
        
    }

    有时候,string 对象与数值之间需要相互转换,下面这个例子详细说明了如何完成这
    项工作:

    #include <iostream> 
    #include <string> 
    #include <sstream> 
    using namespace std; 
    //C++方法:将数值转换为string 
    string convertToString(double x) 
    { 
    ostringstream o; 
    if (o << x) 
     return o.str(); 
    return "conversion error";//if error 
    } 
    //C++方法:将string转换为数值
    double convertFromString(const string &s) 
    { 
    istringstream i(s); 
    double x; 
    if (i >> x) 
    return x; 
    return 0.0;//if error 
    } 
    int main(int argc, char* argv[]) 
    { 
    //将数值转换为string的第一种方法:C方法
    char b[10]; 
    string a; 
    sprintf(b,"%d",1975); 
    a=b; 
    cout<<a<<endl; 
    //将数值转换为string的第二种方法:C++方法
    string cc=convertToString(1976); 
    cout<<cc<<endl; 
    //将string转换为数值的方法:C++方法
    string dd="2006"; 
    int p=convertFromString(dd)+2; 
    cout<<p<<endl; 
    return 0; 
    }
  • 相关阅读:
    Flutter Platform Channels
    catch socket error
    global position
    aria2 添加任务后一直在等待,不进行下载是什么情况?
    通知
    rename file
    长按弹菜单
    Linux命令行下如何终止当前程序?
    IOWebSocketChannel.connect handle errors
    writeAsBytes writeAsString
  • 原文地址:https://www.cnblogs.com/Alandre/p/3417487.html
Copyright © 2020-2023  润新知