天天看點

int與string類型轉換一、int到string類型轉換二、string到int的轉換

一、int到string類型轉換

int類型到string類型的轉換在程式設計中經常用到,每次都是忘了就查,然後還記不住,今天索性總結一次。 int類型轉string類型的方法目前我總結出了三種,如下所示:

(1)使用itoa

#include <iostream>
#include <stdlib.h>
using namespace std;

int main()
{
    int a = 10;
    char intstr[20];
    itoa(a,intstr,10);
    string str = string(intstr);
    cout<<str<<endl;
    return 0;
}
           

這種方法不是很好用,平時我基本也沒用過。

(2)使用stringstream

#include<iostream>
#include <sstream>

using namespace std;

int main()
{
    int a = 10;
    stringstream ss;
    ss<<a;
    string str = ss.str();
    cout<<str<<endl;
    return 0;
}
           

這種我用的比較多。 (3)今天新學到的一種方法,比較簡便。

#include <iostream>
#include <string>

using namespace std;

int main()
{
    int a = 10;
    string str = to_string(a);
    cout<<str<<endl;
    return 0;
}
           

注意這個函數在VS2013中是可以使用的,但是在codeblocks 16.01中卻編譯不通過,我大略的在網上查了一下,好像是codeblocks用的MingW的bug。具體的看這個連結 點選打開連結

二、string到int的轉換

(1)使用atoi函數

#include <iostream>
#include <stdlib.h>
using namespace std;

int main()
{
    string s = "10";
    int a = atoi(s.c_str());
    cout<<a<<endl;
    return 0;
}
           

注意這裡不能直接使用string類型,要把string類型轉換為char型數組。 但是C++11給出了一種新的替換方法,如下所示:

#include <iostream>
#include <string>
using namespace std;

int main()
{
	string str = "10";
	int a = stoi(str);
	cout << a << endl;
	return 0;
}
           

注意這種方法在codeblocks中仍然無法通過編譯。

(2)使用istringstream

#include <iostream>
#include <sstream>

using namespace std;

int main()
{
    string s = "10";
    istringstream ss(s);
    int a;
    ss>>a;
    cout<<a<<endl;
    return 0;
}