int 與 string 相互轉換
阿新 • • 發佈:2019-01-28
int轉化為string
<!>最簡單 用to_string
int i = 111;
string s = to_string(i);
cout<<s<<endl;
1、使用itoa(int to string)
1 //char *itoa( int value, char *string,int radix); 2 // 原型說明: 3 // value:欲轉換的資料。 4 // string:目標字串的地址。 5 // radix:轉換後的進位制數,可以是10進位制、16進位制等。 6 // 返回指向string這個字串的指標 7 8 int aa = 30; 9 char c[8]; 10 itoa(aa,c,16); 11 cout<<c<<endl;
2.使用sprintf
1 // int sprintf( char *buffer, const char *format, [ argument] … ); 2 //引數列表 3 // buffer:char型指標,指向將要寫入的字串的緩衝區。 4 // format:格式化字串。 5 // [argument]...:可選引數,可以是任何型別的資料。 6 // 返回值:字串長度(strlen) 7 8 int aa = 30; 9 char c[8]; 10 int length = sprintf(c, "%05X", aa); 11 cout<<c<<endl; // 0001E
3、使用stringstream 標頭檔案<sstream>
int aa = 30;
2 stringstream ss;
3 ss<<aa;
4 string s1 = ss.str();
5 cout<<s1<<endl; // 30
6
7 string s2;
8 ss>>s2;
9 cout<<s2<<endl; // 30
可以這樣理解,stringstream可以吞下不同的型別,根據s2的型別,然後吐出不同的型別。
4、使用boost庫中的lexical_cast
---------------------------------------------------------------------------------------------------------------------------------------------------------------1 int aa = 30; 2 string s = boost::lexical_cast<string>(aa); 3 cout<<s<<endl; // 30
string轉化為int
最簡單
string s = "12";
int i = stoi(s);
cout << i << endl;
string 轉為long
long l = stol(s);
string 轉為double
double d = stod(s);
1、使用strtol(string to long)
1 string s = "17";
2 char* end;
3 int i = static_cast<int>(strtol(s.c_str(),&end,16));
4 cout<<i<<endl; // 23
5
6 i = static_cast<int>(strtol(s.c_str(),&end,10));
7 cout<<i<<endl; // 17
2、使用sscanf2 sscanf("17","%D",&i);
3 cout<<i<<endl; // 17
4
5 sscanf("17","%X",&i);
6 cout<<i<<endl; // 23
7
8 sscanf("0X17","%X",&i);
9 cout<<i<<endl; // 23
3、使用stringstream
1 string s = "17";
2
3 stringstream ss;
4 ss<<s;
5
6 int i;
7 ss>>i;
8 cout<<i<<endl; // 17
注:stringstream可以吞下任何型別,根據實際需要吐出不同的型別。4、使用boost庫中的lexical_cast
1 string s = "17";
2 int i = boost::lexical_cast<int>(s);
3 cout<<i<<endl; // 17