re: 反外掛的一點牢騷 螞蟻終結者 2007-12-23 13:17
中國的外掛真是NB的不行了!
re: strlen源碼剖析 螞蟻終結者 2007-12-05 19:39
@福福
中文字符應該用wcslen才對,strlen是用來處理單字節字符串的。
詳細描述請看MSDN:
However, strlen interprets the string as a single-byte character string, so its return value is always equal to the number of bytes, even if the string contains multibyte characters. wcslen is a wide-character version of strlen; the argument of wcslen is a wide-character string and the count of characters is in wide (two-byte) characters.
re: 關于sizeof()的簡單解析 螞蟻終結者 2007-11-15 10:51
以前也沒有注意過,主要是不會這么寫!
re: MD5算法的C++實現 螞蟻終結者 2007-11-10 10:49
@MonkeyLin
thanks!
ICU記得以前編譯Boost庫時下載過。
在64位機器上確實會有問題,不過為了簡單,也為了減少對庫的依賴性,把
typedef unsigned long ulong;
改成
typedef unsigned int uint32;
基本就夠用了。
已經更新了源代碼^_^
re: strlen源碼剖析 螞蟻終結者 2007-11-04 09:35
you gotta it!
re: 自己動手編寫的QQ客戶端 螞蟻終結者 2007-10-22 23:11
呵呵,前不久也打算寫個玩玩,一直沒時間
re: MD5算法的C++實現 螞蟻終結者 2007-10-22 13:24
@MonkeyLin
都是學習嘛,互相討論會更有收獲呵呵。
re: 做筆試題增長功力(3)--華為 螞蟻終結者 2007-10-18 19:22
華為的筆試題貌似不難么,呵呵
re: 無符號變量居然也能輸出-1 螞蟻終結者 2007-10-18 12:44
呵呵,過來改正個筆誤,11111111居然寫成了1111了...
re: 你也許不知道的#define用法 螞蟻終結者 2007-10-18 11:21
#@x
倒沒怎么見過
re: 漢語編程++ 螞蟻終結者 2007-10-18 11:17
非把人累死不可,確實是無聊的東西
re: 無符號變量居然也能輸出-1 螞蟻終結者 2007-10-18 11:08
實際上就是有符號數轉換中"符號位擴展"的問題。
short temp2 = temp1;
...
unsigned int temp6 = temp2;
先不管temp2的值是多少,上面就是short符號位擴展到int,然后再從int轉unsigned int的問題。short是有符號類型,先進行符號位擴展(假設short為16位,int/unsigned int為32位)
1. short為正數,則最高位為0,當從16位擴展到32位int時,擴展的高16位用0填充,即將符號位0進行擴展,這樣擴展后的32位整數和原來的整數值是一樣的。
2. short為負數,則最高位為1,當從16位擴展到32位int時,擴展的高16位用1填充,即將符號位1進行擴展,這樣擴展后的32位整數和原來的整數值是也是一樣的。
即上面的代碼等效于:
short temp2 = temp1;//temp2為-1(11111111 11111111)
...
int tempInt = temp2; //符號位擴展,tempInt也為-1(11111111 11111111 11111111 11111111)
unsigned int temp6 = tempInt;//將(11111111 11111111 11111111 11111111)解釋為無符號
re: MD5算法的C++實現 螞蟻終結者 2007-10-18 10:27
@MonkeyLin
thanks!不過我想你沒有仔細看代碼,string是按值返回的,不存在任何問題。
如果返回值類型是string&或string*,才會出現你說的返回局部變量的問題。
另外,return str;與return string(str);并無本質區別。
re: 如何寫出專業的C頭文件 螞蟻終結者 2007-10-17 10:04
都是相當實用的,不錯。
re: 轉:字節對齊詳解 螞蟻終結者 2007-10-17 10:00
不錯的文章。
入門的書籍有一本叫C++ how to program什么的好像很不錯,就是有點厚,大概1000多頁吧。中等書籍C++ Primer不錯,再就是Effective C++,More Effective C++, Exception C++, More Exception C++之類的。
C++標準庫的當然少不了,講STL入門的有The C++ Standard Library,還可以當參考書用。還有STL源碼剖析等。。。不一一列舉了,總之好書太多了呵呵
re: 中國年輕人最絕望的六大社會現狀 螞蟻終結者 2007-10-13 15:47
小心被和諧了,呵呵~
re: strlen源碼剖析 螞蟻終結者 2007-10-12 16:43
我也奇怪,就改了一下,再發布就變了。連日期都變了,郁悶。。。
@fr3@K
謝謝你的建議。
不能從static code中調用Instance()確實是一種限制。我想應該可以通過某種類似Boost::singleton中的技巧來確保static object(mutex)在Instance()之前初始化。有時間了再把這段內容補上。
其實后來覺得多數情況下eager initialization要優于lazy initialization。
如經典的Meyer's Singleton以及Boost::singleton
@fr3@K
實際上multithreading的問題不在于mutex這里,一個好的設計會在main函數真正啟動后再調用Instance(),而這時候global object可以確保已經初始化,即在調用Instance()時可以保證mutex已經初始化。因此只要程序在真正進入main函數以前不調用Instance(),就不會有global instance的初始化問題。
re: DES算法及其在VC++6.0下的實現 螞蟻終結者 2007-10-08 22:40
不錯,比較詳細,有時間再看。
re: 開源QQ協議庫QQProtocol 螞蟻終結者 2007-10-06 09:38
不錯的東西,先收下了哈哈。。。
re: [轉]一學期內表情的變化[圖] 螞蟻終結者 2007-09-27 11:37
有意思
re: strlen源碼剖析 螞蟻終結者 2007-09-27 11:16
c語言的版本不會有endian的問題,如果用匯編就需要注意了。
假設有4個連續的字節abcd,現在要找出其中的第一個0字節:
1. 在PowerPC這種big-endian的計算機上,將這4個字節讀到寄存器中依然是
abcd,從左到右找到最左邊的0字節就OK了。
2. 在X86這種little-endian的計算機上,將這4個字節讀到寄存器中就會變成
dcba,這就需要從右到左找到最右邊的0字節。
可以看出,上面VC的匯編實現是針對X86計算機的。
re: 處女座:避免陷入細節 螞蟻終結者 2007-09-27 10:06
剛好我是處女座的,難道是在說我呵呵!
re: [原創]想買的幾本書啊~~殘念... 螞蟻終結者 2007-09-27 10:05
英文原版圖書在國內是在難買
re: strlen源碼剖析 螞蟻終結者 2007-09-27 09:35
Sorry,我不該用WORD這個單詞。我說的WORD在這里表示計算機中的一個字長,不是一般為2個字節的WORD類型。
re: C++&Win32寫的空當接龍 螞蟻終結者 2007-09-27 09:13
AI算法不是我自己寫的,用的是Freecell Solver的C代碼。那個比較復雜,差不多有1W多行,為了方便我就封裝成了AI.dll
re: strlen源碼剖析 螞蟻終結者 2007-09-27 09:06
實際上0~255都能檢測出來的:
if (cp[0] == 0)
return cp - str;
if (cp[1] == 0)
return cp - str + 1;
if (cp[2] == 0)
return cp - str + 2;
if (cp[3] == 0)
return cp - str + 3;
如果上面的語句執行完還沒有return,則會繼續下一次循環,這樣還是能檢測到在if語句中漏掉的128~255,只不過效率上會有所損失。如果要檢測0~255之間的字符,strlen_c比strlen_d要好。因為strlen_c只會漏掉這樣的WORD:
10000000 XXXXXXXX XXXXXXXX XXXXXXXX
re: 從for到foreach 螞蟻終結者 2007-09-27 08:33
用for來處理container確實比較麻煩,有時候for語句還得折行。
估計新的特性可能還要等不少時間...
re: strlen源碼剖析 螞蟻終結者 2007-09-27 08:19
可能我說的不夠清楚,看下面的例子:
b3 b2 b1 b0
31------------------------------->0
longword: 00001001 00011000 00000000 00001100
+ magic_bits: 01111110 11111110 11111110 11111111
sum: 10001000 00010110 11111111 00001011
^ ~longword: 11110110 11100111 11111111 11110011
a:
01111110 11110001 00000000 11111000
& ~magic_bits: 10000001 00000001 00000001 00000000
result: 00000000 00000001 00000000 00000000
sum = longword + magic_bits;
a = sum ^ ~longword;
即用sum與longword逐位比較,如果有某個位相同,就說這個位在加法后未改變,這樣在a中為1的位就是未改變的。
result = a & ~magic_bits;
得到未改變的hole位,從上例可以看出第16 bit這個hole加法后未改變,這樣就檢測出了0字節。
re: C++ 類成員的CALLBACK 螞蟻終結者 2007-09-23 09:32
不錯的例子
re: 動態鏈接dll 螞蟻終結者 2007-09-17 08:01
也有叫load-time dynamic linking和run-time dynamic linking,上面的是run-time dynamic linking
re: 又是未完成的東西 螞蟻終結者 2007-09-15 22:49
看了一下ppt的代碼,如skipper所說,效率并不高,先不說lazy evaluation??纯碝etrix本身的設計:
copy construct 其實沒必要2層循環,也沒必要用operator()來存取元素:
這樣寫效率肯定不一樣
Metrix::Metrix(const Metrix& a) {
M = a.M;
N = a.N;
int size = M * N;
element = new double[size];
for (int i = 0; i < size ; ++i)
element[i] = a.element[i];
}
當然了,上面的還可以再優化,用memcpy會更快:
Metrix::Metrix(const Metrix& a) {
//...
memcpy(element, a.element, size * sizeof(double));
}
copy assignment operator以及operator+也一樣可以優化...
不多說了呵呵
re: MD5算法的C++實現 螞蟻終結者 2007-09-15 18:41
@abc
沒問題就好?!澳弊挚吹梦液霉?..
re: 今天碰到了一個奇怪的問題 螞蟻終結者 2007-09-15 10:42
new (trieNode);//還真是奇怪的寫法
如果trieNode是個class,
new (trieNode);
去掉括號等同于new trieNode;
也應該等同于new trieNode();
re: MD5算法的C++實現 螞蟻終結者 2007-09-15 09:52
@abc
我最早就是在VC++ 2005上寫的代碼,在GCC上也測試過。
有可能你沒有把md5.cpp加入工程,如果只用md5.h和test.cpp進行編譯就會出現上面的8個error。
re: 熊貓燒香 源碼 有興趣的來看看 螞蟻終結者 2007-09-14 08:20
對Delphi不熟悉,飄過。。。
不錯,以前只知道bit field不好移植,今天算是見到實際例子了
re: STL問題系列一 螞蟻終結者 2007-09-13 20:21
這本書我沒看過,不過The C++ Standard Library很不錯
re: msdn也有錯? 螞蟻終結者 2007-09-13 10:11
應該是MSDN的問題,STL的參考書還是The C++ Standard Library比較棒.
re: MD5算法的C++實現 螞蟻終結者 2007-09-13 08:27
@ornaking
呵呵,共同學習
re: 寫了一個用來寫log信息的小程序 螞蟻終結者 2007-09-11 15:51
cppblog最近人氣不高啊,幫你頂頂...
re: MD5算法的C++實現 螞蟻終結者 2007-09-11 15:32
@VrcatS
有意思,thanks!
re: MD5算法的C++實現 螞蟻終結者 2007-09-11 12:25
總算抽出時間修改了一下接口,只敢說比以前的好。實在想不出比較完美的,要是哪位有好的想法還望告知...
re: MD5算法的C++實現 螞蟻終結者 2007-09-10 11:45
@SmartPtr
Sorry!我對.Net不太熟悉呵呵
re: MD5算法的C++實現 螞蟻終結者 2007-09-10 11:25
@Ray
Thanks!
頭文件的define確實該放在cpp里,是我疏忽了。
類的接口也正在優化...