类型转换

【字符串转数字】从前往后逐个变换

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;
}

  

  

  

 

上一篇:21.03.01 scanf与cin


下一篇:实验一