C++中int和string的互相转换

这里学习哒~

一、用sstream类

1. int -> string

#include<iostream>
#include<sstream>      //需要引用的头文件
using namespace std;

int main(){
    int x = 1234;        //需要转换的数字
    stringstream sstr;
    string str;

    sstr<<x;
    str = sstr.str();    //转换后的字符串
    cout << str <<endl;
    return 0;
}

2. string -> int

#include<iostream>
#include<sstream>      //需要引用的头文件
using namespace std;

int main(){
    int x;
    string str = "4321";  //需要转换的字符串
    stringstream sstr(str);

    sstr >> x;            //转换后的数字
    cout << x << endl;
}

缺点:处理大量数据时候速度慢;stringstream不会主动释放内存。

二、用sprintf、sscanf函数

1. int -> string

#include<iostream>
using namespace std;

int main(){
    int x = 1234;    //需要转换的数字
    string str;
    char ch[5];      //需要定义的字符串数组:容量等于数字长度+1即可

    sprintf(ch,"%d", x);
    str = ch;         //转换后的字符串
    cout << str << endl;
}

2. string -> int、float

#include<iostream>
using namespace std;

int main(){
    char ch[10] = "12.34";    //需要转换的字符串
    int x;                    //转换后的int型
    float f;                  //转换后的float型

    sscanf(ch, "%d", &x);      //转换到int过程
    sscanf(ch, "%f", &f);      //转换到float过程

    cout << x << endl;
    cout << f << endl;
}

三、C标准库atoi, atof, atol, atoll(C++11标准) 函数

可以将字符串转换成int,double, long, long long 型

1. int -> string

itoa函数:
定义:
char *itoa(int value, char *string, int radix);
参数:
① value:需要转换的int型
② string:转换后的字符串,为字符串数组
③ radix:进制,范围2-36

(没run起来,一直报错,随后再补)

2. string -> int、double、long、long long

atoi函数:
定义:
int atoi(const char *nptr);
double atof(const char *nptr);
long atol(const char *nptr);
long long atoll(const char *nptr);
参数:
① nptr:字符串数组首地址

#include<iostream>
#include<stdlib.h>      //需要引用的头文件
using namespace std;

int main(){
    int x;
    char ch[] = "4321";    //需要转换的字符串
    x = atoi(ch);          //转换后的int数字

    cout << x << endl;
}
posted @ 2022-02-22 23:08  二越  阅读(758)  评论(0编辑  收藏  举报