ACM--string常見用法

在ACM競賽中,經常須要將讀入的數字的每位分離出來,若是採用取餘的方法,花
費的時間就會太長,這時候,咱們能夠將讀入的數據當成字符串來處理,這樣就方便、省
時多了。下面這個程序演示了求一個整數各位的和:ios

#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 對象與數值之間須要相互轉換,下面這個例子詳細說明了如何完成這
項工做:spa

#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; 
}
相關文章
相關標籤/搜索