boost的字串處理函數——format

用boost::format來格式化字串在字串處理中少不了格式化字串,C++中傳統的格式化函數是C語言的sprintf,但它一個很大的問題就是不安全。因此,在stl中引入了stringstream來實現安全格式化,但是stringstream卻遠不如sprintf來得直觀。例如,對如如下代碼:    char text[]="hello";        bool is_all_lower = boost::algorithm::all(text, is_lower());    char

在InstallShield中發布單一的Setup.exe檔案

InstallShield預設的Release模式下,產生了一個setup.exe檔案,一個msi檔案,以及一些其它的雜項檔案。    這種方式的好處是不用解壓,點擊setup.exe就可以直接開始安裝,非常適合以前的那種傳統的光碟片發布安裝包的形式。    但是如今大都不發布光碟片了,而是直接發布一個連結地址,使用者直接通過這個連結地址下載到安裝檔案後安裝。這時這種多檔案的方式就不方便發布了,如果把它打包成zip格式的話還需要一個解壓的步驟,是非常好不友好的。我們通常的方式是將所有檔案它合并成

boost的字串處理函數——string algorithm

c++在stl庫中提供了一個string類用以代替c語言的char*來實現字串功能,不過stl的string只提供了一個連接字串和尋找的功能,其它的常用函數幾乎一律沒有,就連字號串替換都得自己來實現,和c#的字串函數比起來簡直弱爆了。boost庫在標頭檔<boost/algorithm/string.hpp>中提供了不少字串處理函數,用以協助我們實現基本的字串處理功能,極大程度上緩解了字串函數不夠用的問題。    string str1("hello abc-*-ABC-*-aBc

多線程下載程式的功能需求

最近給自己寫了個類似迅雷的多線程下載程式(我用的是非同步socket,嚴格來說並不是多線程的方式,應該算多任務),總結了下相關需求,主要如下:下載功能(Core) 支援指定URL下載檔案 支援實現自訂Refer、Cookie等Header 支援查詢下載速度、檔案大小 支援檔案快取功能。 下載完成後校正已經下載的檔案大小是否等於遠端檔案大小(防止伺服器端主動中斷串連) 下載到同名檔案智能重新命名 支援失敗重試 支援下載速度較慢時主動中斷並重試

好用的log查看工具log2console

前段時間在文章《log4net使用簡介》中介紹了一下如何通過log4net記錄日誌,今天在這裡推薦一個配套的log查看工具log2console,這個是一個非常好用的開源log查看器。這個log查看器非常有用,通過它可以查看程式中產生的日誌。另外,它的即時日誌功能非常方便,我們在記錄檔中往往並不記錄Trace層級的資訊(資訊較多,會覆蓋或影響正常日誌的查看),但是通過log2console就可以即時查看,對於程式的流程分析是非常有用的。我現在經常用它配合log4net代替Debug.WriteL

boost.circular_buffer簡介

很多時候,我們需要在記憶體中記錄最近一段時間的資料,如操作記錄等。由於這部分資料記錄在記憶體中,因此並不能無限遞增,一般有容量限制,超過後就將最開始的資料移除掉。在stl中並沒有這樣的資料結構,一般需要我們自己構造,常用方法如下:用list構造,超過後把資料頭移除用vector構造,超過後把資料頭移除用數組構造,通過迴圈的方式覆蓋這幾種方式都有各自的缺點:用list構造無法實現隨機訪問,用vector構造移動資料頭開銷較大,用數組構造需要維護資料頭指標和防止計數器溢出,計算位置和資料的移除也相對

STL任務庫簡介

管理工作在C++ 11的thread庫引入了std::async函數,通過它可以非常容易的實作類別似於.net中的Task方式的並發。    void printf_thread_id(constchar* name)    {        cout << name << " Thread id: " << this_thread::get_id() << endl;    }    int

log4net使用簡介

當我們開發軟體時,一般都會加入運行期的跟蹤手段,以方便後續故障分析和Bug調試。.net

用boost.signal實現多播委託

使用boost.signalboost.signal提供了一個多播委託機制,通過它可以非常容易的實現觀察者模式:    void print_sum(float x, float y)    {        std::cout << "The sum is " << x+y << std::endl;    }    void print_product(floatx, floaty)    {        std::cout << "The

在WCF程式中動態修改app.config設定檔

今天在個WCF程式中加入了修改設定檔的功能。我是直接通過IO操作修改的app.config檔案內容,修改後發現發現其並不生效,用Google搜了一下,在園子裡的文章動態修改App.Config 和web.Config中找到瞭解決方案。原來,.net

STL線程庫簡介

STL線程庫的前身是boost::thread,在C++ 11標準化後便正式歸納入了stl庫,通過它我們可以很容易實現跨平台的線程管理。線程管理在std::thread庫中,一個線程用的是一個thread對象表示,當建立一個thread對象時即建立一個線程,一個簡單的樣本如下:    #include<iostream>    #include<thread>    usingnamespace std;    void thread_entry(constchar*

WCF入門(九)——未處理異常

對於用戶端來說,遠程調用出現異常需要手動捕獲,否則將導致程式異常終止。對於伺服器端來說,客戶調用是出現的異常會往上拋,但是會被WCF架構給捕獲,不會導致伺服器崩潰,可以不手動捕獲。例如,如下服務函數被調用時並不會導致伺服器崩潰:    public class Service1 : IService1    {        publicvoid ErrorTest()        {            thrownewInvalidOperationException("異常測試"); 

HttpClient是否有預設並發數限制?

在.Net 4.0之前,一直是依靠HttpWebRequest實現Http操作的。它預設有一個非常保守的同一網站下最大2並發數限制,導致預設情況下HttpWebRequest往往得不到理想的速度(估計這個策略鬱悶了不少碼農),必須修改App.config或ServicePointManager.DefaultConnectionLimit的值。MS在.Net

Entity Framework學習(二)基本操作

我們一般對資料主要有增刪查以及更新這幾中基本操作形式,本文就以前面的文章中的代碼為例,簡單的介紹一下在Entity Framework中基本操作的使用方法。查詢1. 通過linq語句查詢    var query = from b in db.Blogs                where b.BlogId == 1 && b.Name == "my blog"                select b;    var blog =

關於中國天氣(Weather.com.cn)的查詢

這兩天看了下如何擷取天氣預報,寫篇文章總結下:Weather.com有如下三個Json格式的查詢介面,以北京為例:http://www.weather.com.cn/data/sk/101010100.htmlhttp://www.weather.com.cn/data/cityinfo/101010100.htmlhttp://m.weather.com.cn/data/101010100.html直接存取它就可以擷取到Json格式的資料,解析後就可以用了。其中第三個m.weather.com

App商店不給力?換個DNS試試

這兩天在GooglePlay上更新了下軟體,但在中國特色的互連網服務的環境下,一個幾百k的小程式下了十分鐘後硬是下不下來。無奈之餘,我試著DNS改了下,改成了Google的8.8.8.8後,發現速度有明顯好轉,起碼能看到進度條在動了,看來網通的DNS確實是把我們往溝裡帶。由於Google的DNS有時會把我們引出國,影響我們其它訪問的網速。然後便在網上搜了下,找到了一個國內提供的DNS服務114DNS。114.114.114.114 114.114.115.115

Entity Framework學習(一)CodeFirst入門

CodeFirst是EntityFramework 4.1後新增的一種映射方式,在這種方式下,開發人員只需要編寫代碼,由ORM架構自動動建立模型和資料庫,資料庫則可看作類似於XML一樣序列化的方式,非常簡潔(由於開發人員可以無需關心資料庫的具體結構,最初也有叫做CodeOnly的)。下面就以一個簡單的例子示範一下如何使用CodeFirst。一、用Nuget添加EntityFramework架構的引用。 二、編寫代碼     static void Main(string[] args)    {

用boost::lexical_cast進行數值轉換

在STL庫中,我們可以通過stringstream來實現字串和數字間的轉換:    int i = 0;    stringstream ss;    ss << "123";    ss >> i;但stringstream是沒有錯誤檢查的功能,例如對如如下代碼,會將i給賦值為12.    ss << "12.3";    ss >> i;甚至連這樣的代碼都能正常運行:    ss << "hello world";    ss

STL檔案讀寫基礎

stl中對檔案讀寫的函數在標頭檔fstream中定義,它的基本物件模型如下:其中包含三個對象ifstrea、ofstream和fstream,分別對檔案提供唯讀、唯寫、讀寫功能,從其對象繼承關係也可以看出這一點。下面就簡單的介紹下基本的檔案方法開啟檔案 開啟檔案一般有兩種方式:1、在建構函式中開啟     ifstream input("r:\\3.txt", ios::in | ios::binary); 2、通過open函數開啟     ofstream output;    output.

通過boost.date_time進行時間運算

標準C函數的時間運算是非常不好用的,boost提供了一個跨平台的日期庫boost.date_time,通過它可以快速實現各種時間運算。boost.date_time中的時間對象為boost::posix_time::ptime,在<boost/date_time.hpp>中定義,它的常用操作如下。擷取現在時間:     ptime now = second_clock::local_time();    cout << now << endl; 擷取日期資訊:

總頁數: 61357 1 .... 3520 3521 3522 3523 3524 .... 61357 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.