名稱空間
變體
操作

std::stof, std::stod, std::stold

來自 cppreference.com
< cpp‎ | string‎ | basic_string
 
 
 
std::basic_string
 
定義於標頭檔案 <string>
float       stof ( const std::string& str, std::size_t* pos = nullptr );
(1) (C++11 起)
float       stof ( const std::wstring& str, std::size_t* pos = nullptr );
(2) (C++11 起)
double      stod ( const std::string& str, std::size_t* pos = nullptr );
(3) (C++11 起)
double      stod ( const std::wstring& str, std::size_t* pos = nullptr );
(4) (C++11 起)
long double stold( const std::string& str, std::size_t* pos = nullptr );
(5) (C++11 起)
long double stold( const std::wstring& str, std::size_t* pos = nullptr );
(6) (C++11 起)

解析字串 str 中的浮點值。

ptr 為內部(對轉換函式而言)型別為 char* (1,3,5)wchar_t* (2,4,6) 的指標。

1) 呼叫 std::strtof(str.c_str(), &ptr)
2) 呼叫 std::wcstof(str.c_str(), &ptr)
3) 呼叫 std::strtod(str.c_str(), &ptr)
4) 呼叫 std::wcstod(str.c_str(), &ptr)
5) 呼叫 std::strtold(str.c_str(), &ptr)
6) 呼叫 std::wcstold(str.c_str(), &ptr)

函式會丟棄所有空白字元(由 std::isspace 確定),直到找到第一個非空白字元。然後,它會盡可能多地獲取字元以形成有效的浮點表示,並將其轉換為浮點值。有效的浮點值可以是以下之一:

  • 十進位制浮點表示式。它由以下部分組成:
  • (可選) 加號或減號
  • 非空十進位制數字序列,可選地包含小數點字元(由當前的 C 區域設定 確定)(定義有效數)
  • (可選) eE,後跟可選的減號或加號以及非空十進位制數字序列(定義以 10 為底的指數)
  • 十六進位制浮點表示式。它由以下部分組成:
  • (可選) 加號或減號
  • 0x0X
  • 非空十六進位制數字序列,可選地包含小數點字元(由當前的 C 區域設定 確定)(定義有效數)
  • (可選) pP,後跟可選的減號或加號以及非空十進位制數字序列(定義以 2 為底的指數)
  • 無窮大表達式。它由以下部分組成:
  • (可選) 加號或減號
  • INFINFINITY,不區分大小寫
  • 非數字表達式。它由以下部分組成:
  • (可選) 加號或減號
  • NANNAN(char_sequence ),忽略 NAN 部分的大小寫。char_sequence 只能包含數字、拉丁字母和下劃線。結果是一個靜默 NaN 浮點值。
  • 當前已安裝的 C 區域設定 可能接受的任何其他表示式。

如果 pos 不是空指標,那麼 ptr 將接收 str.c_str() 中第一個未轉換字元的地址,並且該字元的索引將被計算並存儲在 *pos 中,給出轉換處理的字元數。

目錄

[編輯] 引數

str - 要轉換的字串
pos - 用於儲存已處理字元數的整數地址

[編輯] 返回值

轉換為指定浮點型別的字串。

[編輯] 異常

如果沒有執行任何轉換,則丟擲 std::invalid_argument

如果轉換後的值超出結果型別的範圍,或者底層函式(std::strtofstd::strtodstd::strtold)將 errno 設定為 ERANGE,則丟擲 std::out_of_range

[編輯] 示例

[編輯] 缺陷報告

下列更改行為的缺陷報告追溯地應用於以前出版的 C++ 標準。

缺陷報告 應用於 釋出時的行為 正確的行為
LWG 2009 C++11 如果轉換後的值超出結果型別的範圍,將不會丟擲
std::out_of_range
將丟擲
LWG 2403 C++11 stof 呼叫 std::strtodstd::wcstod stof 呼叫 std::strtofstd::wcstof

[編輯] 另請參閱

(C++11)(C++11)(C++11)
將字串轉換為有符號整數
(函式) [編輯]
(C++11)(C++11)
將字串轉換為無符號整數
(函式) [編輯]
將字元序列轉換為整數或浮點值
(函式) [編輯]