C++ 中 int 与string相互转换

int -->  string

1.使用itoa()函数

将任意类型的数字变量转换为字串子变量。

#include<stdio.h>
#include<iostream>
#include<string>
using namespace std;
int main()
{
    int a= 123;
    char str[20] ;
    itoa(a,str,10);
    cout<<str<<endl;
    return 0;
}

缺点:它是一个非标准的C / C++语言功能,因此不能好好的被所有编译器使用

2.使用sprintf转化

主要功能是把格式化的数据写入某个字符串中

原型

int sprintf( char *buffer, const char *format, [ argument] … );
 

参数列表

buffer:char型指针,指向将要写入的字符串的缓冲区。
format:格式化字符串。
[argument]...:可选参数,可以是任何类型的数据。
#include<stdio.h>
#include<iostream>
#include<cmath>
#include<string>
using namespace std;
int main()
{
    int a= 123;
    char str[20] ;    
    sprintf(str,"%d",a);
    cout<<str<<endl;
    return 0;
}

2.使用to_string()函数

这个函数是C++11.0新增的

string to_string (int val);
string to_string (long val);
string to_string (long long val);
string to_string (unsigned val);
string to_string (unsigned long val);
string to_string (unsigned long long val);
string to_string (float val);
string to_string (double val);
string to_string (long double val)

#include<iostream>
#include<string>
using namespace std;
int main()
{
    int a = 123;
    string str = to_string(a);
    cout<<a<<endl;
}

string   -->  int

1.使用atoi函数

(表示 ascii to integer)是把字符串转换成整型数的一个函数

int atoi(const char *nptr);

#include<stdio.h>
#include<iostream>
#include<cmath>
#include<string>
using namespace std;
int main()
{
    
    char str[20] = "123";
    int num = atoi(str);
    cout<<num<<endl;
    return 0;
}

2.使用strtol函数

long int strtol(const char *nptr,char **endptr,int base);

#include<stdio.h>
#include<iostream>
#include<cmath>
#include<string>
using namespace std;
int main()
{
    
    char str[20] = "123";    
    int num2 = strtol(str, NULL, 10);
    cout<<num2<<endl;    
    return 0;
}

3.使用itos函数

#include<iostream>
#include<string>
using namespace std;
int main()
{
    int num = 12;
    string str = itos(num);
    cout<<str<<endl;
}