首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> C++ 入門

C++ string 與 double 互相轉換完整指南

     編輯:C++ 入門

前言

C++ 標準庫提供 <sstream> 中的 istringstream 與 ostringstream,可安全、靈活地實現 std::string 與 double 的雙向轉換,避免 atof / sprintf 的緩衝區風險。

1. string → double

#include 
#include 
#include 

std::string s = "23.45";
double d;
std::istringstream is(s);
is >> d;
std::cout << d << std::endl; // 輸出 23.45

原理:將字串建立輸入串流,再用 operator>> 提取為 double。若字串格式無效,d 維持 0 且串流進入失敗狀態,建議轉換後檢查 is.fail()。

2. double → string

double d = 45.67;
std::string s;
std::ostringstream os;
os << d;
s = os.str();
std::cout << s << std::endl; // 輸出 "45.67"

原理:建立輸出串流,寫入 double,再取得內部字串。可結合 std::fixed、std::setprecision 控制輸出格式。

3. 封裝為通用函式

double strToDouble(const std::string& str) {
    std::istringstream iss(str);
    double val;
    iss >> val;
    if (iss.fail()) throw std::invalid_argument("Invalid number format");
    return val;
}

std::string doubleToStr(double val, int precision = 6) {
    std::ostringstream oss;
    oss << std::fixed << std::setprecision(precision) << val;
    return oss.str();
}

總結

串流轉換類型安全、可擴充(支援自訂型別)、易於格式控制,是 C++ 進行字串與數值互轉的推薦做法。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved