亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C++ Boost實(shí)現(xiàn)數(shù)字與字符串轉(zhuǎn)化詳解

 更新時(shí)間:2022年11月16日 09:24:42   作者:無(wú)水先生  
Boost是為C++語(yǔ)言標(biāo)準(zhǔn)庫(kù)提供擴(kuò)展的一些C++程序庫(kù)的總稱(chēng)。Boost庫(kù)是一個(gè)可移植、提供源代碼的C++庫(kù),作為標(biāo)準(zhǔn)庫(kù)的后備,是C++標(biāo)準(zhǔn)化進(jìn)程的開(kāi)發(fā)引擎之一,是為C++語(yǔ)言標(biāo)準(zhǔn)庫(kù)提供擴(kuò)展的一些C++程序庫(kù)的總稱(chēng)

一、引言

在boost庫(kù)中,有一個(gè)函數(shù)Boost.LexicalCast可以將數(shù)字和字符串進(jìn)行雙向轉(zhuǎn)換。本文介紹這種用法的案例。

二、Boost.LexicalCast

Boost.LexicalCast 提供了一個(gè)轉(zhuǎn)換運(yùn)算符,boost::lexical_cast,它可以將數(shù)字從字符串轉(zhuǎn)換為數(shù)字類(lèi)型,例如 int 或 double ,反之亦然。 boost::lexical_cast 是 std::stoi()、std::stod() 和 std::to_string() 等函數(shù)的替代方案,這些函數(shù)已添加到 C++11 的標(biāo)準(zhǔn)庫(kù)中。

2.1 示例1

使用boost::lexical_cast

#include <boost/lexical_cast.hpp>
#include <string>
#include <iostream>
int main()
{
  std::string s = boost::lexical_cast<std::string>(123);
  std::cout << s << '\n';
  double d = boost::lexical_cast<double>(s);
  std::cout << d << '\n';
}

轉(zhuǎn)換運(yùn)算符 boost::lexical_cast 可以轉(zhuǎn)換不同類(lèi)型的數(shù)字。示例 6.1 首先將整數(shù) 123 轉(zhuǎn)換為字符串,然后將字符串轉(zhuǎn)換為浮點(diǎn)數(shù)。要使用 boost::lexical_cast,請(qǐng)包含頭文件 boost/lexical_cast.hpp。

boost::lexical_cast 在內(nèi)部使用流來(lái)執(zhí)行轉(zhuǎn)換。因此,只能轉(zhuǎn)換具有重載運(yùn)算符<< 和運(yùn)算符>> 的類(lèi)型。但是,可以針對(duì)某些類(lèi)型優(yōu)化 boost::lexical_cast 以實(shí)現(xiàn)更有效的轉(zhuǎn)換。

2.2 示例2

boost::bad_lexical_cast當(dāng)出錯(cuò)時(shí)

#include <boost/lexical_cast.hpp>
#include <string>
#include <iostream>
int main()
{
  try
  {
    int i = boost::lexical_cast<int>("abc");
    std::cout << i << '\n';
  }
  catch (const boost::bad_lexical_cast &e)
  {
    std::cerr << e.what() << '\n';
  }
}

如果轉(zhuǎn)換失敗,則會(huì)拋出從 std::bad_cast 派生的 boost::bad_lexical_cast 類(lèi)型的異常。示例 2 引發(fā)異常,因?yàn)樽址?ldquo;abc”無(wú)法轉(zhuǎn)換為 int 類(lèi)型的數(shù)字。

三、lexical_cast與c/c++提供類(lèi)似接口的比較

3.1 兩者比較

標(biāo)準(zhǔn)c家族中包含此類(lèi)函數(shù),例如atoi與itoa等,它們的缺點(diǎn)是:

(1)各個(gè)轉(zhuǎn)換都是單向的,雙向轉(zhuǎn)換為不同函數(shù),各種轉(zhuǎn)換函數(shù)不同,接口眾多;

(2)僅支持基礎(chǔ)數(shù)據(jù)類(lèi)型的子集,如int,long,double;

(3)不能提供統(tǒng)一的接口,易用性差;

c++中提供了stringstream,使用它進(jìn)行格式轉(zhuǎn)換可讀性較差,使用起點(diǎn)較高,只是簡(jiǎn)單的轉(zhuǎn)換,stringstream太重量級(jí)。

boost提供了lexical_cast,使用統(tǒng)一接口形式實(shí)現(xiàn)任意類(lèi)型之間的轉(zhuǎn)換,增強(qiáng)了易用性。但如果需要嚴(yán)密控制精度的轉(zhuǎn)換,仍然推薦使用stringstream;數(shù)值之間的轉(zhuǎn)換,推薦使用numeric_cast。

3.2 樣例

#include "iostream"
#include "boost/lexical_cast.hpp" // 需要包含的頭文件
using boost::lexical_cast;
using boost::bad_lexical_cast;
using namespace std;
int main()
{
    char* p="32768";
    int i=0;
    try
    {
        i=lexical_cast<int>(p); // 將字符串轉(zhuǎn)化為整數(shù)
    }
    catch(bad_lexical_cast&)    // 轉(zhuǎn)換失敗會(huì)拋出一個(gè)異常
    {
        i=0;
    }
    cout << i << endl;
    return i;
}

到此這篇關(guān)于C++ Boost實(shí)現(xiàn)數(shù)字與字符串轉(zhuǎn)化詳解的文章就介紹到這了,更多相關(guān)C++數(shù)字與字符串轉(zhuǎn)化內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語(yǔ)言實(shí)現(xiàn)貪吃蛇代碼

    C語(yǔ)言實(shí)現(xiàn)貪吃蛇代碼

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)貪吃蛇代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • C++ 獲取進(jìn)程CPU占用率

    C++ 獲取進(jìn)程CPU占用率

    這篇文章主要介紹了C++ 獲取進(jìn)程CPU占用率,需要的朋友可以參考下
    2019-04-04
  • Qt QStandardItemModel用法小結(jié)

    Qt QStandardItemModel用法小結(jié)

    QStandardItemModel可用作標(biāo)準(zhǔn)Qt數(shù)據(jù)類(lèi)型的存儲(chǔ)庫(kù),本文主要介紹了Qt QStandardItemModel用法小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-12-12
  • Qt基于定時(shí)器實(shí)現(xiàn)動(dòng)圖展示效果

    Qt基于定時(shí)器實(shí)現(xiàn)動(dòng)圖展示效果

    這篇文章主要為大家詳細(xì)介紹了Qt基于定時(shí)器實(shí)現(xiàn)簡(jiǎn)單動(dòng)圖展示,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • C/C++函數(shù)參數(shù)聲明解析int?fun()?與?int?fun(void)?的區(qū)別講解

    C/C++函數(shù)參數(shù)聲明解析int?fun()?與?int?fun(void)?的區(qū)別講解

    C++中int fun()和int fun(void)的區(qū)別在于函數(shù)參數(shù)的聲明方式,前者默認(rèn)允許任意參數(shù),而后者表示沒(méi)有參數(shù),通過(guò)清晰的實(shí)例源代碼,詳細(xì)解釋了它們?cè)诤瘮?shù)聲明和調(diào)用中的不同之處,這篇文章介紹了C/C++函數(shù)參數(shù)聲明int?fun()與int?fun(void)的差異,需要的朋友可以參考下
    2024-01-01
  • C語(yǔ)言實(shí)現(xiàn)雙人貪吃蛇游戲?qū)嵗a

    C語(yǔ)言實(shí)現(xiàn)雙人貪吃蛇游戲?qū)嵗a

    大家好,本篇文章主要講的是C語(yǔ)言實(shí)現(xiàn)雙人貪吃蛇游戲?qū)嵗a,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • 詳解如何將Spire.XLS for C++集成到C++程序中

    詳解如何將Spire.XLS for C++集成到C++程序中

    Spire.XLS for C++ 是一個(gè) Excel 庫(kù),供開(kāi)發(fā)人員在任何類(lèi)型的 C++ 應(yīng)用程序中操作 Excel 文檔(XLS、XLSX、XLSB 和 XLSM)。 本文演示了如何以?xún)煞N不同的方式將 Spire.XLS for C++ 集成到您的 C++ 應(yīng)用程序中
    2023-03-03
  • C語(yǔ)言鏈表與單鏈表詳解

    C語(yǔ)言鏈表與單鏈表詳解

    鏈表是一種物理存儲(chǔ)結(jié)構(gòu)上非連續(xù)、非順序的存儲(chǔ)結(jié)構(gòu),數(shù)據(jù)元素的邏輯順序是通過(guò)鏈表中的指針鏈接次序?qū)崿F(xiàn)的,本章帶你詳細(xì)了解鏈表與單鏈表
    2022-02-02
  • C++中Covariant返回值類(lèi)型詳解

    C++中Covariant返回值類(lèi)型詳解

    這篇文章主要介紹了C++中Covariant返回值類(lèi)型詳解,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以可以參考一下
    2022-09-09
  • C++實(shí)現(xiàn)LeetCode(144.二叉樹(shù)的先序遍歷)

    C++實(shí)現(xiàn)LeetCode(144.二叉樹(shù)的先序遍歷)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(144.二叉樹(shù)的先序遍歷),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07

最新評(píng)論