舍棄精華,擁抱糟粕,閑得蛋疼?。⊥ㄗx博文和評論得出的結(jié)論是堅定不移地使用大師經(jīng)典sprintf!
re: Qt:繪制帶高光的按鈕[未登錄] Tom 2013-08-07 21:39
哇,這效果真炫??!
re: KMP算法祥解[未登錄] TOM 2013-03-30 01:37
第二種求串的函數(shù)有錯 下面的語句
if(k!= -1 && pattern[k]!= pattern[j] )
應(yīng)該改為
while(k!= -1 && pattern[k]!= pattern[j] )
樓主可以試試
abdabaabdabbe這個數(shù)據(jù) 第一種串函數(shù)的才是正確的
看了你的Demo,非常好啊,請教下用的是那個算法啊,謝謝,tom.cat@163.com
re: MFC打印程序的編制[未登錄] Tom 2012-05-24 14:12
干嘛要用綠色的背景啊,眼睛都看花了。哎。
re: C++雜談[未登錄] tom 2011-07-12 12:13
@pangzi
"auto_ptr<int*>,細節(jié)是魔鬼"
You are the best!
- construct a set S
- for each element in vector
insert it into S
if fails, remove element
為什么不調(diào)用C Runtime比如itoa()之類,然后對字符串進行操作?
@樓主,
我說的就是這個意思,除非有中國人在C++ committee 里推動,這個事情的優(yōu)先級不會太高。所以在c++03的基礎(chǔ)上支持UNICODE還會是較長時間里的現(xiàn)實。
這也是我前面的建議的前提。
@空明流轉(zhuǎn), Windows不UCS已經(jīng)很多年了。
See here:
“UTF-16 is used for the native internal representation of text in Microsoft Windows 2000/XP/2003/Vista/CE.[7]”
Cited from
http://en.wikipedia.org/wiki/UTF-16/UCS-2.
@陳良喬
新標準C++11已經(jīng)開始從標準的層面對unicode提供的支持,還是紙面上的,無論GCC還是VC++都還沒實現(xiàn),Clang不清楚。在可以預(yù)見的的將來這不是優(yōu)先工作,畢竟這玩意兒涉及到某種“種族歧視”(不記得哪篇UNICODE的介紹文章里提到過):說英語的人對UNICODE的需求遠小于我們。更現(xiàn)實的情況是:現(xiàn)有的API不可能用C++1x改寫,我們還得跟這些legacy code交互多年。
再說一句,這本是算是一本真正的關(guān)于C++書,希望這種書越來越多。
買了一本捧場,作為國內(nèi)原創(chuàng),值得鼓勵,很值得鼓勵。而且內(nèi)容與時俱進。
說說缺點。類似
cout << "中文內(nèi)容";
應(yīng)該寫成
wcout << L"中文內(nèi)容";
這對于我們中文使用者才是正確的做法。包括basic_string<T>在內(nèi),都應(yīng)該鼓勵采用wchar_t形式。今天的世界,任何字符串信息都應(yīng)該采用UNICODE.
在c++標準支持unicode之前,wchar_t是Windows平臺上最近似默認的UTF-16的做法,不僅提高效率(因為不須在內(nèi)部再轉(zhuǎn)換),更重要的,減少字符串相關(guān)算法的潛在錯誤。
Unix上UTF-8流行,另說。
考慮到此書提到ppl,側(cè)重Windows平臺。應(yīng)當提倡正確的編碼風格,尤其對非英文軟件編寫的程序員。
單元的定義是可以因人因系統(tǒng)而異的。一個全新的應(yīng)用,當然可以以函數(shù)或類位單元。對于舊系統(tǒng)以一個易于定義的,穩(wěn)定的功能單元來作為基本單位測試,先把他框住。有必要再深入撕扯重構(gòu),未嘗不可。
在我看來,單元測試最大的意義在于為以后的更改做準備,最大限度保證功能是遞增的,不會在引入新功能的情況下意外犧牲已有的功能。
不過我一般用Boost.Test。
采用16進制傳輸?shù)臅r候,解包成ascii A0變成20???B0變成30?
1. XP以后的平臺(含XP)COM是可以免注冊的,Win7等微軟自己新寫的COM很多就采用這種方式了,基本原理就是自帶干糧,manifest file.
2. 跨編譯器的導(dǎo)出C++ class的方式,一般是DLL采用Singleton模式編寫,導(dǎo)出C指針。Codeproject上有一篇文章講這個 (
http://www.codeproject.com/KB/cpp/howto_export_cpp_classes.aspx)
3.如果有興趣或者是沒興趣(只想用用)可以看看boost.extension.注意這個還不是標準的boost庫成員。也沒被提交review過。
@空明流轉(zhuǎn),
我可沒冒犯樓主的意思,聞道有先后而已。
tokenizer<>是按string的traits來分割的,也就是說“隱含的意思“是只能用來分割用ISO/IEC 8859-1字符集的,中文如"貓 狗 豬"肯定不是。
所以你要么用支持特定編碼的第三方庫(utf-cpp),這樣來增加string的編碼支持功能;要么用wstring達到理論上不完備,但現(xiàn)實上不大可能出錯的效果(限于Windows). C++的basic_string<CharT>是不包含任何編碼功能的,也就談不上對文本的語義斷開了。所以你的看到的結(jié)果其實是C++意義上正確的,而在中文語義上錯誤了。因此是你誤用工具,不是boost庫或C++語言的錯。
關(guān)鍵的知識點在于,任何文本一定是有編碼的,每次你用到文本,你總是接受了某種隱含的假設(shè),只是你可能沒意識到。除非你只寫英文版軟件,你可以假裝編碼不存在。
你的例子剛好說明,你必須要掌握的編碼的相關(guān)知識。
你的使用方法是錯誤的.應(yīng)該使用wstring, 與 L"貓 狗 豬". 建議學(xué)習(xí)一下有關(guān)UNICODE等編碼相關(guān)知識,以及C++的相關(guān)支持方式。基本上,除非你的母語是English也只給English people寫程序,encoding相關(guān)的知識是繞不開的,早晚要掌握。
試過std::bitset沒?可以用int直接構(gòu)造,再循環(huán)調(diào)用std::bitset::test()測試每一位就齊活。
用BOOST_FOREACH更好點,使用的是ISO標準C++。VC那是CLI擴展,非ISO標準.
我想買,加我qq,你們?nèi)簼M了64031410
re: 多國語言惹得禍[未登錄] tom 2007-11-09 21:00
Did you try boost.filesystem? It providesa convenient directory iterator(as easy as like walk() in python) and supports wide characters well
re: 一道面試題目[未登錄] Tom 2007-02-06 14:28
學(xué)習(xí)到了一些,多謝~~~