【字符串转数字】从前往后逐个变换
int a=0; for(int i=0;i<strlen(chr);i++) { a=a*10+(chr[i]-'0'); }
【字符串转数字】从后往前使用pow逐个变换
#include <cmath> int count=0,a=0; for(int i=strlen(chr);i>=0;i--) { a+=pow(10,count++)*(chr[i]-'0'); }
【string字符串转double/int数字】利用<sstream>的stringstream , 可以是浮点数
#include <iostream> #include <sstream> ... int main() { stringstream ss; double x; string str; cin>>str; ss<<str; ss>>x; cout<<x; ... }
【string字符串转int】利用<string>中的stoi函数,只能是整数(浮点数不行)
//如果遇到非法输入,stoi会自动截取最前面的数字,直到遇到不是数字为止 #include <iostream> #include <string> using namespace std; int main() { int x; string str; cin>>str; x=stoi(str); cout<<x; return 0; }
【string字符串转double/int】stod函数
#include <iostream> #include <string> using namespace std; int main() { double x; string str; cin>>str; x=stod(str); cout<<x; return 0; }
【stoi和atoi区别】
stoi的形参是const string*,而atoi的形参是const char*。c_str()的作用是将const string*转化为const char*。
#include <iostream> #include <string> using namespace std; int main() { int x,y,z; string str; char chr[100]; cin>>str; cin>>chr; x=stoi(str); y=atoi(chr); z=atoi(str.c_str()); cout<<x<<endl; cout<<y<<endl; cout<<z<<endl; return 0; }