程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> [C++]字符串和數字的相互轉化(借助STL)

[C++]字符串和數字的相互轉化(借助STL)

編輯:C++入門知識

在C++編程中有時會遇到字符串和數字的相互轉化,以前學習的時候老師喜歡將這種轉化當成作業,要我們寫函數實現。但是實際為了方便准確還是會優先使用STL來完成。 在 C 標准庫中提供了字符串到數值類型的轉化函數,但是沒有提供數值到字符串的轉換(不過有些系統如 Windows API中提供數值到字符串的轉化)。先看看C標准庫中的字符串轉化函數,這些函數都包含在頭文件 中: \
表1 C 標准庫中的字符串轉換函數
這些函數的用法想必都比較熟悉就不多說了,細節可以參考 C或C++ 標准庫。這裡主要說下借助 C++ 標准模板庫中的 stringstream 來完成字符串的轉換。
平時我們在用 std::cout 和 std::cin 時,感覺很直接,它能根據你的數據類型自動的執行輸入輸出操作,無論是字符、整型、浮點型,它都能以字符串形式輸出到控制台,同樣也可以從控制台讀入字符串,解析成各種數值類型。上面提到的 stringstream 派生自 iostream,繼承了iostream的輸入輸出操作,你可以把它看成std::cout 和 std::cin的內存版本,對其進行的輸入輸出不是與控制台交互,而是與stringstream內部的字符串交互。下面是stringstream 的繼承圖: \
圖1 C++標准I/O庫繼承圖
接下來舉兩個例子,應該就都會用了:
(1)字符串 --> 數值類型 先准備好包含數值類型的字符串,然後定義 istringstream 實例,使用其輸入操作將其內部的字符串解析為相應的數值類型,最後輸出。

#include 
#include 

int main()
{
    string str = "12 3.14";
    istringstream in(str);
    int v1;
    double v2;
    in >> v1 >> v2;
    cout << "v1=" << v1 << " ,v2=" << v2 << endl;
    return 0;
}

運行結果: v1=12 ,v2=3.14
(2)數值類型 --> 字符串 先准備好數值類型數據,然後定義 ostringstream 實例,使用其輸出操作將數值類型輸出到 stringstream 內部字符緩沖區中,最後調用 ostringstream::str() 成員函數獲取內部字符串。
#include 
#include 

int main()
{
    int v1 = 12;
    float v2 = 2.14f;
    double v3 = 3.1415926;
    long long v4 = 0x0123456789ABCDEF;
    ostringstream out;
    out << v1 << " "
        << v2 << " "
        << v3 << " "
        << hex << uppercase << v4;
    cout << "str=" << out.str() << endl;
    return 0;
}

運行結果: str=12 2.14 3.14159 123456789ABCDEF
如果不知道輸入輸出方向,也可以直接使用 stringstream。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved