1. 程式人生 > 其它 >字串數字變為(long long)int,float

字串數字變為(long long)int,float

1,利用atoi或者stoi進行轉換

atoi 將char中儲存的數字變為int型別,若string可以string.c_str()後再使用 越界會導致溢位
stoi 將string中儲存的數字變為int型別 越界會導致執行錯誤

 

    string s1="1654564564564512451",s2="000004546",s3="-4562415",s4;
    char ch[]="45645621",ch1[100]="15.4";
    s4=ch1;//char*可以直接賦值給string
    cout<<stoi(s1);//超出int的範圍,出現執行錯誤
    cout<<stoll(s1)<<endl;//
未超出long long cout<<atoi(s1.c_str())<<endl;//溢位 cout<<atoi(s2.c_str())<<endl;//正確 結果顯示4546 cout<<atof(ch1)<<endl;//char->float cout<<s4; //s4="hello"+"world";錯誤 兩個字串字面值相加時+操作符的左右運算元必須至少有一個是string類

2,利用stream流進行轉換,需要加上標頭檔案<sstream>

 1 #include <bits/stdc++.h>
 2
using namespace std; 3 template<typename out_type,typename in_type> 4 out_type convert(const in_type &input) 5 { 6 stringstream stream; 7 stream<<input;//向流中傳值 8 out_type result;//儲存轉換的結果 9 stream>>result;//向resul中寫入值 10 return result; 11 } 12 int main() 13
{ 14 float float_num =-99.876; 15 string double_str ="-87.89"; 16 int int_num = convert< int, char*>("-102");//將char型別數字-102轉為int型 17 string float_str=convert<string,float>(float_num);//將floa型別數字轉為string型 18 double double_num=convert<double,string>(double_str);//將strin型別數字轉為double型 19 cout<<int_num<<endl<<double_num<<endl<<float_str; 20 return 0; 21 }