1. 程式人生 > >C++中int或double與string的相互轉換

C++中int或double與string的相互轉換

一、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中