字串數字變為(long long)int,float
阿新 • • 發佈:2022-03-23
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> 2using 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 }