C++中int或double與string的相互轉換
阿新 • • 發佈:2019-01-25
一、int轉string
1.c++11標準增加了全域性函式std::to_string:
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);
to_string這個函式可以把很多數型別變成string型別,很強大
下面來看一個例子
#include<iostream>
#include<string>
using namespace std;
int main()
{
double pi = 3.14;
string s1 = "pi=" + to_string(pi);
string s2 = to_string(1 + 2 + 4 + 7 + 14) + " is the sum";
cout << s1 << endl;
cout << s2 << endl;
return 0;
}
執行結果:
二、藉助字串流:
標準庫定義了三種類型字串流:istringstream,ostringstream,stringstream
這幾種型別和iostream中的幾個非常類似,分別可以讀、寫、讀和寫string型別,它們也確實是從iostream型別派生而來的。
要使用它們需要包含sstream標頭檔案
#include<iostream>
#include<string>
#include <sstream>
using namespace std ;
//將int型的i變成string型別
int main()
{
ostringstream myos; //構造一個輸出字串流,流內容為空
int i = 12;
myos << i; //向輸出字串流中輸出int整數i的內容
string s = myos.str(); //利用字串流的str函式獲取流中的內容
cout << s + " is the result" << endl;
}
執行結果:
二、string轉int
1、可以使用std::stoi/stol/stoll等等函式
stoi(字串,起始位置,2~32進位制),將n進位制的字串轉化為十進位制。
例子:
// stoi example
#include <iostream>
#include <string> // std::string, std::stoi
using namespace std;
int main()
{
string str_dec = "2001, A Space Odyssey";
string str_hex = "40c3";
string str_bin = "-10010110001";
string str_auto = "0x7f";
string::size_type sz; // alias of size_t
int i_dec = stoi(str_dec, &sz);
int i_hex = stoi(str_hex, nullptr, 16);
int i_bin = stoi(str_bin, nullptr, 2);
int i_auto = stoi(str_auto, nullptr, 0);
cout << str_dec << ": " << i_dec << " and [" << str_dec.substr(sz) << "]\n";
cout << str_hex << ": " << i_hex << '\n';
cout << str_bin << ": " << i_bin << '\n';
cout << str_auto << ": " << i_auto << '\n';
return 0;
}
2、採用標準庫中atoi函式,對於其他型別也都有相應的標準庫函式,比如浮點型atof(),long型atol()等等
#include <iostream>
using namespace std;
int main()
{
string s = "12";
int a = atoi(s.c_str());
cout <<"int a="<< a<<endl;
}
3、採用sstream標頭檔案中定義的字串流物件來實現轉換。
istringstream is("12"); //構造輸入字串流,流的內容初始化為“12”的字串
int i;
is >> i; //從is流中讀入一個int整數存入i中