不再犯錯

  1.  pos = vv.erase(pos);//不幸:erase導致pos從此失效;幸運:返回有效pos;注意處理pos
  2.  for_each(...bind2nd(ptr_fun(myfunc),a));//ptr_fun要求myfunc參數不能&,a作爲myfunc的2參;for_each傳入1參
  3. pos++比++pos多耗費一個臨時對象,所以多用後者
  4. for_each(
      find_if(vv.begin(),vv.end(),qsmarker),
      find_if(vv.rbegin(),vv.rend(),qsmarker),   //iter和riter不能同時在一個算法裏
      qsmarker_do)
  5.    inf.SetValue(s,(*pos).substr(0,idx-1),(*pos).substr(++idx));//用到vector的參數如果參與算法可能自動刪除元素
  6. 路徑不能含漢字:fstream使用string作文件名,改成wstring即可!
  7. 文件:while( !fin.eof())//讀兩次末尾???while(fin.get(c))可行
  8. VC8的.ncb 無編譯瀏覽文件(no compile browser)比較大,提供自動顯示功能。
  9. 使用windows.h就用pch,namespace要在#include後
  10. C2220 warning treated as error - no object file generated 拿掉 /WX開關
  11. wstring刪除末尾:ws.erase(ws.size()-1),用wstring::npos,ws.end()--都不對!
  12. VC8設置solution窗口位置:拖動中出現位置圖標,繼續拖動到圖標出
  13. UNICODE:使用windows後臺轉換函數版本,將造成你的參數被動。此時堅持使用TEXT,LPCTSTR!
  14. UNICODE:添加std::wcout.imbue(std::locale("chs")); //必須否則不能識別漢字
  15. UNICODE:ofstream使用ansi ,CString使用默認的unicode,所以wcout << str2.GetString()可以of << str2.GetString()不行。利用ATL的  CT2CA pszConvertedAnsiString (str2);of<<pszConvertedAnsiString 就行,這是專業處理TCHAR的工具。
  16. 使用SHFileOperationW需要buf,如果使用wstring操作,那麼不能得到/0/0尾部,所以需要先將數組清零
  17. 調試:release版本出錯!註釋語句定位>分析:一般發生在自動析構代碼。一定初始化!好習慣
  18. 調試:shell等com編程調試時會引起ondraw()函數後臺運行,導致不能定位錯誤
  19. 函數指針:void (*pf)(void);定義了函數指針pf,pf=F,pf=&F均是初始化。pf(),(*pf)()均是調用。
    或者Typedef void (*PF)(void);PF pf;函數指針數組PF pfs[10]等價void (*pfs[10])(),
    指針數組的指針:PF (*ppfs)[10]=&pfs,(*ppfs)[0]=pfs[0];ppfs[0]()等價((*ppfs)[0])()
  20. 減少依賴:使用指針和引用,不依賴定義(需要知道分配內存),只依賴聲明
  21. 進程共享DLL數據:dll中在共享數據段中輸出數據(extern"C"保持名稱不變)。GetProcAddress獲得地址後強制轉換!
  22. shell編程,windows.h必須包含在前面!
  23. 不同環境導致函數版本不對,#pragma comment(linker, "/NODEFAULTLIB:LIBCMT.LIB")解決問題
  24. 不要隨便拷貝,可能包含不可見非法字符!使用結構必須清零!SHELLEXECUTEINFOW se={0};
  25. 去除DEPRECATE警告#define _CRT_SECURE_NO_DEPRECATE
  26. 調試版本=C++設置debug格式,link產生debug信息
  27. StretchBlt需要源的起點、寬度、高度
  28. 執行全部子類相似操作:static const函數指針數組(需要統一類型)+子類static函數
  29. BAT合併mp3:copy /B c:/青花瓷.mp3+c:/track2.mp3 c:/all.mp3
  30. BAT查文件:dir i:/*ad.* /s /B  >> c:/1.txt
  31.  cout、cerr、clog、cin都是標準配置的流(常用),cerr沒緩衝不響應'>',都可以重定向。注意保留原流streambuf*   strm_buffer   =   std::cerr.rdbuf(of.rdbuf());
  32. 控件list:使用GetText獲得string置
  33. 控件:lixtbox int n=m_ctlList.AddString(str);m_ctlList.SetCurSel(n);//SetScrollPos(SB_VERT,n);//SetFocus();
  34. 控件:dlg閃爍->不要擦除=InvalideRect(FALSE
  35. 時間:UTC是絕對時間;日曆時間是相對時間(流逝秒數);本地時間調整時差;time系列函數精度爲秒;計時需要毫秒級的clock。_mktime將tm轉爲秒數,_localtime64_s相反。wcsftime輸出
  36. C語言:從MFC>C++>C一路墮落下來,原來C如此簡潔美:不讓隨便申請變量、要求語法有差異!
  37. 指針: 野指針害人。delete後要null,才能容忍冗餘刪除。傳指型指針就得裏外維護!警惕!懷念智能指針
  38. StdAfx:boost::ublas編譯錯誤是因爲使用 "StdAfx.h"-->取消該cpp的預編譯
  39. 字符串格式化:添加flag改變輸出細節/“-”寬度內左對齊/“+”添加符號/“ ”空格替代正數的符號位,被“+”屏蔽
    “0”被“-”屏蔽/“#”
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章