最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2022年11月16日 09:24:42   作者:無水先生  
Boost是為C++語言標準庫提供擴展的一些C++程序庫的總稱。Boost庫是一個可移植、提供源代碼的C++庫,作為標準庫的后備,是C++標準化進程的開發(fā)引擎之一,是為C++語言標準庫提供擴展的一些C++程序庫的總稱

一、引言

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

二、Boost.LexicalCast

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

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)換運算符 boost::lexical_cast 可以轉(zhuǎn)換不同類型的數(shù)字。示例 6.1 首先將整數(shù) 123 轉(zhuǎn)換為字符串,然后將字符串轉(zhuǎn)換為浮點數(shù)。要使用 boost::lexical_cast,請包含頭文件 boost/lexical_cast.hpp。

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

2.2 示例2

boost::bad_lexical_cast當出錯時

#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)換失敗,則會拋出從 std::bad_cast 派生的 boost::bad_lexical_cast 類型的異常。示例 2 引發(fā)異常,因為字符串“abc”無法轉(zhuǎn)換為 int 類型的數(shù)字。

三、lexical_cast與c/c++提供類似接口的比較

3.1 兩者比較

標準c家族中包含此類函數(shù),例如atoi與itoa等,它們的缺點是:

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

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

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

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

boost提供了lexical_cast,使用統(tǒng)一接口形式實現(xiàn)任意類型之間的轉(zhuǎ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)換失敗會拋出一個異常
    {
        i=0;
    }
    cout << i << endl;
    return i;
}

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

相關文章

  • C語言樹狀數(shù)組的實例詳解

    C語言樹狀數(shù)組的實例詳解

    這篇文章主要介紹了C語言樹狀數(shù)組的實例詳解的相關資料,希望通過本文能幫助到大家,讓大家理解掌握這部分內(nèi)容,需要的朋友可以參考下
    2017-10-10
  • C語言實現(xiàn)套接字操作的示例代碼

    C語言實現(xiàn)套接字操作的示例代碼

    在C語言中,套接字(Socket)是一種進行網(wǎng)絡通信的接口,這篇文章就來和大家介紹一下C語言中是如何進行套接字操作的,需要的可以參考一下
    2023-06-06
  • C++ 風靡一時的連連看游戲的實現(xiàn)流程詳解

    C++ 風靡一時的連連看游戲的實現(xiàn)流程詳解

    游戲“連連看”是源自臺灣的桌面小游戲,自從流入大陸以來風靡一時,也吸引眾多程序員開發(fā)出多種版本的“連連看”。這其中,顧芳編寫的“阿達連連看”以其精良的制作廣受好評,這也成為顧方“阿達系列軟件”的核心產(chǎn)品。并于2004年,取得國家版權局的計算機軟件登記證書
    2021-11-11
  • C語言簡明講解快速排序的應用

    C語言簡明講解快速排序的應用

    快速排序由于排序效率在同為O(N*logN)的幾種排序方法中效率較高,因此經(jīng)常被采用,再加上快速排序思想----分治法也確實實用,因此很多軟件公司的筆試面試,包括像騰訊,微軟等知名IT公司都喜歡考這個,還有大大小的程序方面的考試如軟考,考研中也常常出現(xiàn)快速排序的身影
    2022-05-05
  • C 語言基礎教程(一)顏色加亮

    C 語言基礎教程(一)顏色加亮

    C 語言基礎教程(一)顏色加亮...
    2007-02-02
  • C語言超詳細講解結(jié)構體與聯(lián)合體的使用

    C語言超詳細講解結(jié)構體與聯(lián)合體的使用

    結(jié)構體和聯(lián)合體用于描述事物的屬性,如一只鳥的信息,可能包括它的品種,體重,顏色,年齡等,接下來大家一起來詳細看看吧
    2022-05-05
  • 關于C/C++中typedef的定義與用法總結(jié)

    關于C/C++中typedef的定義與用法總結(jié)

    在C還是C++代碼中,typedef都使用的很多,在C代碼中尤其是多,typedef與#define有些相似,其實是不同的,特別是在一些復雜的用法上,需要的朋友可以參考下
    2012-12-12
  • 字符串拷貝函數(shù)memcpy和strncpy以及snprintf 的性能比較

    字符串拷貝函數(shù)memcpy和strncpy以及snprintf 的性能比較

    以下是對字符串拷貝函數(shù)memcpy和strncpy以及snprintf它們之間的性能進行了比較,需要的朋友可以過來參考下
    2013-07-07
  • 關于memcpy和memmove的一點重要說明

    關于memcpy和memmove的一點重要說明

    下面小編就為大家?guī)硪黄P于memcpy和memmove的一點重要說明。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • C++ vector如何動態(tài)申請內(nèi)存的元素

    C++ vector如何動態(tài)申請內(nèi)存的元素

    vector是一種動態(tài)數(shù)組,本文主要介紹了C++ vector如何動態(tài)申請內(nèi)存的元素,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07

最新評論

临漳县| 东海县| 贡觉县| 祥云县| 泸西县| 辽阳市| 突泉县| 新丰县| 托克逊县| 沁阳市| 西乡县| 东源县| 白山市| 和平区| 泸西县| 崇左市| 江安县| 祁门县| 子洲县| 横峰县| 三都| 镇坪县| 新乡县| 巧家县| 壶关县| 汽车| 阳原县| 团风县| 三门峡市| 嵊州市| 望城县| 成都市| 清水县| 台北市| 太保市| 景德镇市| 平武县| 博兴县| 普兰县| 霍林郭勒市| 图片|