int與string型別轉換
一、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; } --------------------- 作者:lhanchao 來源:CSDN 原文:https://blog.csdn.net/lhanchao/article/details/52096072 版權宣告:本文為博主原創文章,轉載請附上博文連結!