九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
boost安裝總結(jié)

1下載

 官方網(wǎng)站: www.boost.org  到sourceforge指定地方下載boost_1_34_0.zip

2安裝

 我目前只是在window機(jī)器上使用了一下。

解壓后,

 需要設(shè)置兩個(gè)地方。

第一,     執(zhí)行boost_1_34_0\tools\jam\src 下的build.bat,會(huì)生成\bin.ntx86\bjam.exe,將bjam.exe拷貝到你的boost庫(kù)的根目錄下,在命令行下執(zhí)行之。過(guò)程有點(diǎn)長(zhǎng),plz wait!  另外,因?yàn)樗J(rèn)對(duì)多種編譯器都同時(shí)進(jìn)行了配置,所以如果你沒(méi)有裝一些編譯器的話,會(huì)看到屏幕上會(huì)打印出很多系統(tǒng)找不到指定目錄的信息,沒(méi)關(guān)系。

第二,     第二,設(shè)置編譯器查找?guī)煳募窂降牡胤剑热鏥C6中, tools->option->directory, 加入你的boost庫(kù)根路徑就可以了

 3 試用

from: dozb的程序人生,稍加修改

字符串→數(shù)值

#include <boost/lexical_cast.hpp>

#include <iostream>

using namespace boost;

using namespace std;

int main()

{

        int a = lexical_cast<int>("123");

        double b = lexical_cast<double>("123.12");

         cout<<a<<endl;

         cout<<b<<endl;

        return 0;

}

數(shù)值→字符串

#include <boost/lexical_cast.hpp>

#include <string>

#include <iostream>

int main()

{

using std::string;

const double d = 123.12;

string s = boost::lexical_cast<string>(d);

std::cout<<s<<std::endl;

return 0;

}

異常

如果轉(zhuǎn)換失敗,則會(huì)有異常bad_lexical_cast拋出。該異常類是標(biāo)準(zhǔn)異常類bad_cast的子類。

#include <boost/lexical_cast.hpp>

#include <iostream>

int main()

{

using std::cout;

using std::endl;

int i;

try{

i = boost::lexical_cast<int>("abcd");

}

catch(boost::bad_lexical_cast& e)

{

cout<<e.what()<<endl;

return 1;

}

cout<<i<<endl;

return 0;

}

顯然“abcd”并不能轉(zhuǎn)換為一個(gè)int類型的數(shù)值,于是拋出異常,捕捉后輸出“bad lexical cast: source type value could not be interpreted as target”這樣的信息。

注意事項(xiàng)

lexical_cast依賴于字符流std::stringstream(會(huì)自動(dòng)引入頭文件<sstream>[4]),其原理相當(dāng)簡(jiǎn)單:把源類型讀入到字符流中,再寫到目標(biāo)類型中,就大功告成。例如

int d = boost::lexical_cast<int>("123");

就相當(dāng)于

int d;

std::stringstream s;

s<<"123";

s>>d;

既然是使用了字符流,當(dāng)然就有些隨之而來(lái)的問(wèn)題,需要特別指出[5]。

由于Visual C++ 6的本地化(locale)部分實(shí)現(xiàn)有問(wèn)題,因此如果使用了非默認(rèn)的locale,可能會(huì)莫名其妙地拋出異常。當(dāng)然,一般情況下我們并不需要去改變默認(rèn)的locale,所以問(wèn)題不是很大。

輸入數(shù)據(jù)必須“完整”地轉(zhuǎn)換,否則拋出bad_lexical_cast異常。例如

int i = boost::lexical_cast<int>("123.123"); // this will throw

便會(huì)拋出異常。因?yàn)椤?23.123”只能“部分”地轉(zhuǎn)換為123,不能“完整”地轉(zhuǎn)換為123.123。

浮點(diǎn)數(shù)的精度問(wèn)題。

std::string s = boost::lexical_cast<std::string>(123.1234567);

以上語(yǔ)句預(yù)想的結(jié)果是得到“123.1234567”,但是實(shí)際上我們只會(huì)得到“123.123”,因?yàn)槟J(rèn)情況下std::stringstream的精度是6(這是C語(yǔ)言程序庫(kù)中的“前輩”printf留下的傳統(tǒng))。這可以說(shuō)是boost::lexical_cast的一個(gè)bug。怎么辦呢?權(quán)宜之計(jì),可以這么做:打開(kāi)頭文件<boost/lexical_cast.hpp>,注意對(duì)照修改[6]:

#include <boost/limits.hpp>

//...

template<typename Target, typename Source>

Target lexical_cast(Source arg) {

//...

Target result;

interpreter.precision(std::numeric_limits<Source>::digits10);

if( !(interpreter << arg) ||

!(interpreter >> result) ||

!(interpreter >> std::ws).eof())

//...

}

即可得到正確結(jié)果

4 說(shuō)明

做到以上幾步,恭喜您,大部分Boost庫(kù)就可以用了。

為什么不是全部?首先,目前還沒(méi)有一個(gè)能完全符合C++標(biāo)準(zhǔn)的編譯器,所以Boost庫(kù)中的組件或多或少不可用,詳細(xì)信息請(qǐng)看Boost網(wǎng)站上“編譯器支持情況(Compiler Status)”一文。另外,有些庫(kù)需要Build相應(yīng)的lib或dll文件。不過(guò)這樣的庫(kù)很少,主要是由于平臺(tái)相關(guān)性的原因,如處理正則表達(dá)式的regex庫(kù)、支持python語(yǔ)言的python庫(kù)等,而建構(gòu)庫(kù)的過(guò)程相當(dāng)煩瑣,需要使用Jam工具(可以簡(jiǎn)單提一下:在tools/build/jam_src/builds目錄下有三個(gè)文件win32-borlandc.mk、win32-gcc.mk、win32-visualc.mk,分別是適用于Windows平臺(tái)下的Borland C++ Compiler、GNU C++和Visual C++的mak文件。如果在Unix平臺(tái),則應(yīng)使用tools/build/Makefile。用命令行工具make或nmake來(lái)做出Jam執(zhí)行文件,然后再用Jam來(lái)建構(gòu)庫(kù),詳細(xì)內(nèi)容可見(jiàn)Boost.Build文檔)。我個(gè)人的建議是,不用急著去建構(gòu)lib或dll。真的需要使用這些庫(kù)時(shí),再make隨庫(kù)提供的mak文件即可。雖然Boost.Jam也許是Boost庫(kù)未來(lái)發(fā)展的方向,不過(guò)畢竟絕大部分庫(kù)都無(wú)須建構(gòu),可以直接使用。

 5. regex庫(kù)的安裝,試用

先做一點(diǎn)試試,我的平臺(tái)還是windows XP+ VC6.0

step1:   找到文件vcvars32.bat ,備用

step2:  打開(kāi)一個(gè)cmd窗口,并把路徑切換到我的boost庫(kù)目錄下的 \libs\regex\build 子目錄,找到vc6.mak文件

step3: 運(yùn)行 'nmake -fvc6.mak ' ,錯(cuò)誤提示: Error MSVCDIR 變量沒(méi)有指定! 解決辦法:在vcvars32.bat中找到

類似"set MSVCDir=C:\PROGRA~1\MICROS~2\VC98" 的一行,拷貝等號(hào)后面的路徑。用UE打開(kāi)vc6.mak文件

在前面點(diǎn)的位置 定義怎么一行"MSVCDIR = C:\PROGRA~1\MICROS~2\VC98"。 把這個(gè)新的mak文件另存為vc6_new.mak

step 4: 運(yùn)行 'nmake -fvc6_new.mak ' ,  然后便會(huì)產(chǎn)生所需的庫(kù)文件等

step5:  運(yùn)行 'nmake -fvc6_new.mak  install' ,就會(huì)自動(dòng)將regex庫(kù)文件拷貝到 MSVCDIR 指定的目錄下的相關(guān)目錄下(如\bin,\libs等)

這樣就 基本搞定了。關(guān)于什么regex++,我還沒(méi)有試過(guò)。

在VS2005下編譯boost庫(kù)

1. 啟動(dòng)VS2005,在Tool菜單中選擇“Visual Studio 2005 Command Prompt“。VS會(huì)啟動(dòng)命令提示符窗口,并自動(dòng)設(shè)置好相應(yīng)的環(huán)境變量。

 

2. 轉(zhuǎn)到<boost>\libs\regex\build目錄下(<boost>是你存放boost代碼的路徑),運(yùn)行以下命令即可進(jìn)行編譯,這個(gè)過(guò)程可能會(huì)比較久:

nmake -f vc8.make

 

3. 運(yùn)行以下命令進(jìn)行安裝,boost會(huì)把上一步產(chǎn)生的lib文件等拷貝到你的VC目錄下。

nmake -f vc8.make install

 

4. 最后清除安裝時(shí)產(chǎn)生的臨時(shí)文件:

nmake -f vc8.make clean

 

OK,大功告成!可以享用正則表達(dá)式帶來(lái)的強(qiáng)大威力了!

試用

現(xiàn)在找到regex程序小試一下:

實(shí)現(xiàn)一個(gè)簡(jiǎn)單的split功能

#include <list>

#include <iostream>

#include <boost/regex.hpp>

using namespace std;

unsigned tokenise(std::list<std::string>& l, std::string& s)

{

   return boost::regex_split(std::back_inserter(l), s);

}

int main()

{

   string s = "i am a boy!";

   list<string> l;

   unsigned result = tokenise(l, s);

   cout << result << " tokens found" << endl;

  

   while(l.size())

   {

   s = *(l.begin());

   l.pop_front();

    cout << s << endl;

   }

  

   return 0;

}

運(yùn)行成功!

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
windows下boost怎樣安裝與使用說(shuō)明?
在Ubuntu下安裝boost庫(kù)
Boost 安裝指南
boost::conversion
vs2005下安裝boost::regex 及簡(jiǎn)單的使用
VC利用boost庫(kù)解析正則表達(dá)式
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服