在C 中將字串轉換為雙精度數,並對非數字字串進行特殊處理
在C 中,可以使用以下命令無縫地將字串轉換為雙精度數內建函數。然而,區分數字字串和非數字字串變得至關重要。為了應對這項挑戰,我們提出了一個針對非數字字串回傳 0 的解決方案。
函數實作:
我們解決方案的核心在於string_to_double 函數:
<code class="cpp">#include <sstream> double string_to_double(const std::string& s) { std::istringstream i(s); double x; if (!(i >> x)) return 0; return x; }</code>
工作原理:
測試函數:
<code class="cpp">int main() { assert(0.5 == string_to_double("0.5")); assert(0.5 == string_to_double("0.5 ")); assert(0.5 == string_to_double(" 0.5")); assert(0.5 == string_to_double("0.5a")); // Non-numerical strings will return 0: assert(0 == string_to_double("foobar")); }</code>
限制:需要注意的是,由於非數字字串返回0 的特定要求,無法區分代表零的數字字串和真正的非數字字符串。
以上是如何在 C 中安全地將字串轉換為雙精度並處理非數字字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!