锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
浣滆咃細Nicrosoft(nicrosoft@sunistudio.com) 2001.9.15
涓漢涓婚〉錛歨ttp://www.sunistudio.com/nicrosoft/
涓滄棩鏂囨。錛歨ttp://www.sunistudio.com/asp/sunidoc.asp
銆銆鎴戜滑鐭ラ亾錛岀被鐨勬瀯閫犲嚱鏁版槸娌℃湁榪斿洖鍊肩殑錛屽鏋滄瀯閫犲嚱鏁版瀯閫犲璞″け璐ワ紝涓嶅彲鑳戒緷闈犺繑鍥為敊璇唬鐮併傞偅涔堬紝鍦ㄧ▼搴忎腑濡備綍鏍囪瘑鏋勯犲嚱鏁扮殑澶辮觸鍛紵鏈“鏍囧噯”鐨勬柟娉曞氨鏄細鎶涘嚭涓涓紓甯搞?/p>
銆銆鏋勯犲嚱鏁板け璐ワ紝鎰忓懗鐫瀵硅薄鐨勬瀯閫犲け璐ワ紝閭d箞鎶涘嚭寮傚父涔嬪悗錛岃繖涓?#8220;鍗婃涓嶆椿”鐨勫璞′細琚浣曞鐞嗗憿錛熻繖灝辨槸鏈枃鐨勪富棰樸?/p>
鍦–++涓紝鏋勯犲嚱鏁版姏鍑哄紓甯稿悗錛屾瀽鏋勫嚱鏁頒笉浼氳璋冪敤銆傝繖鏄悎鐞嗙殑錛屽洜涓烘鏃跺璞″茍娌℃湁琚畬鏁存瀯閫犮備篃灝辨槸璇達紝濡傛灉鏋勯犲嚱鏁板凡緇忓仛浜嗕竴浜涜濡傚垎閰嶅唴瀛樸?
鎵撳紑鏂囦歡絳夋搷浣滅殑璇濓紝閭d箞綾婚渶瑕佹湁鑷繁鐨勬垚鍛樻潵璁頒綇鍋氳繃鍝簺鍔ㄤ綔銆傚湪C++涓紝緇忓吀鐨勮В鍐蟲柟妗堟槸浣跨敤STL鐨勬爣鍑嗙被auto_ptr錛岃繖鍦ㄦ瘡涓鏈粡鍏?
C++钁椾綔涓兘鏈変粙緇嶏紝鎴戝湪榪欓噷灝變笉澶氳浜嗐傚湪榪欓噷錛屾垜鎯沖啀浠嬬粛涓縐?#8220;闈炲父瑙?#8221;鐨勬柟寮忥紝鍏舵濇兂灝辨槸閬垮厤鍦ㄦ瀯閫犲嚱鏁頒腑鎶涘嚭寮傚父銆傛垜浠彲浠ュ湪綾諱腑澧炲姞涓涓?
Init(); 浠ュ強 UnInit();鎴愬憳鍑芥暟鐢ㄤ簬榪涜瀹規槗浜х敓閿欒鐨勮祫婧愬垎閰嶅伐浣滐紝鑰岀湡姝g殑鏋勯犲嚱鏁頒腑鍏堝皢鎵鏈夋垚鍛樼疆涓篘ULL錛岀劧鍚庤皟鐢?
Init(); 騫跺垽鏂叾榪斿洖鍊鹼紙鎴栬呮崟鎹?Init()鎶涘嚭鐨勫紓甯革級錛屽鏋淚nit();澶辮觸浜嗭紝鍒欏湪鏋勯犲嚱鏁頒腑璋冪敤 UnInit();
騫惰緗竴涓爣蹇椾綅琛ㄦ槑鏋勯犲け璐ャ俇nInit()涓寜鐓ф垚鍛樻槸鍚︿負NULL榪涜璧勬簮鐨勯噴鏀懼伐浣溿傜ず渚嬩唬鐮佸涓嬶細
class A
{
private:
char* str;
int failed;
public:
A();
~A();
int Init();
int UnInit();
int Failed();
};
A::A()
{
str = NULL;
try
{
Init();
failed = 0;
}
catch(...)
{
failed = 1;
UnInit();
}
}
A::~A()
{
UnInit();
}
int A::Init()
{
str = new char[10];
strcpy(str, "ABCDEFGHI");
throw 10;
return 1;
}
int A::UnInit()
{
if (!str)
{
delete []str;
str = NULL;
}
printf("Free Resource
");
return 1;
}
int A::Failed()
{
return failed;
}
int main(int argc, char* argv[])
{
A* a = new A;
if ( a->Failed() )
printf("failed
");
else
printf("succeeded
");
delete a;
getchar();
return 0;
}
銆銆浣犱細鍙戠幇錛屽湪int A::Init()涓寘鍚簡throw 10;鐨勪唬鐮侊紙浜х敓涓涓紓甯革紝妯℃嫙閿欒鐨勫彂鐢燂級錛屾墽琛岀粨鏋滄槸錛?br>銆銆Free Resource
銆銆failed
銆銆Free Resource
銆銆铏界劧 UnInit();琚皟鐢ㄤ簡涓ゆ錛屼絾鏄敱浜嶶nInit();涓仛浜嗗垽鏂紙if (!str)錛夛紝鍥犳涓嶄細鍙戠敓閿欒銆傝屽鏋滄病鏈夊彂鐢熷紓甯革紙鍘繪帀 int A::Init()涓殑throw 10;浠g爜錛夛紝鎵ц緇撴灉鏄細
銆銆Succeeded
銆銆Free Resource
銆銆鍜屾甯哥殑嫻佺▼娌℃湁浠諱綍鍖哄埆銆?/p>
鍦∣bject Pascal錛圖elphi/VCL錛変腑錛岃繖涓棶棰樺氨鍙樺緱闈炲父鐨勭畝鍗曚簡錛屽洜涓?OP
瀵規瀯閫犲嚱鏁扮殑寮傚父鐨勫鐞嗕笌C++涓嶅悓錛屽湪Create鏃舵姏鍑哄紓甯稿悗錛岀紪璇戝櫒浼氳嚜鍔ㄨ皟鐢ㄦ瀽鏋勫嚱鏁癉estroy錛屽茍涓斾細鍒ゆ柇鍝簺璧勬簮琚垎閰嶄簡錛屽疄琛岃嚜鍔ㄥ洖
鏀躲傚洜姝わ紝鍏朵唬鐮佷篃鍙樺緱闈炲父綆媧侊紝濡備笅錛?br>type
A = class
private
銆銆str : PChar;
public
銆銆constructor Create();
銆銆destructor Destroy(); override;
end;
constructor A.Create();
begin
銆銆str := StrAlloc(10);
銆銆StrCopy(str, 'ABCDEFGHI');
銆銆raise Exception.Create('error');
end;
destructor A.Destroy();
begin
銆銆StrDispose(str);
銆銆WriteLn('Free Resource');
end;
var oa : A;
銆銆i : integer;
begin
銆銆try
銆銆 oa := A.Create();
銆銆 WriteLn('Succeeded');
銆銆 oa.Free();
銆銆except
銆銆 oa := nil;
銆銆 WriteLn('Failed');
銆銆end;
銆銆Read(i);
end.
銆銆鍦ㄨ繖孌典唬鐮佷腑錛屽鏋滄瀯閫犲嚱鏁版姏鍑哄紓甯革紙鍗矯reate涓惈鏈塺aise Exception.Create('error');錛夛紝鎵ц鐨勭粨鏋滄槸錛?br>銆銆Free Resource
銆銆Failed
銆銆姝ゆ椂鐨?#8220;Free Resource”杈撳嚭鏄敱緙栬瘧鍣ㄨ嚜鍔ㄨ皟鐢ㄦ瀽鏋勫嚱鏁版墍浜х敓鐨勩傝屽鏋滄瀯閫犲嚱鏁版甯歌繑鍥烇紙鍗充笉鎶涘嚭寮傚父錛夛紝鍒欐墽琛岀粨鏋滄槸錛?br>銆銆Succeeded
銆銆Free Resource
銆銆姝ゆ椂鐨?#8220;Free Resource”杈撳嚭鏄敱 oa.Free()鐨勮皟鐢ㄤ駭鐢熺殑銆?/p>
緇間笂錛孋++涓嶰bject Pascal瀵逛簬鏋勯犲嚱鏁版姏鍑哄紓甯稿悗鐨勪笉鍚屽鐞嗘柟寮忥紝鍏跺疄姝f槸涓ょ璇█鐨勮璁℃濇兂鐨勪綋鐜般侰++縐夋壙C鐨勯鏍鹼紝娉ㄩ噸鏁堢巼錛屼竴鍒囦氦緇欑▼搴忓憳鏉ユ帉鎻★紝緙栬瘧鍣ㄤ笉 浣滃浣欏姩浣溿侽bject Pascal緇ф壙Pascal鐨勯鏍鹼紝娉ㄩ噸紼嬪簭鐨勭編瀛︽剰涔夛紙涓嶅彲鍚﹁錛孭ascal浠g爜鏄叏涓栫晫鏈浼樼編鐨勪唬鐮侊級錛岀紪璇戝櫒甯姪紼嬪簭鍛樺畬鎴愬鏉傜殑宸ヤ綔銆備袱縐嶈 璦閮芥湁瀛樺湪鐨勭悊鐢憋紝閮芥湁瀛樺湪鐨勫繀瑕侊紒鑰屾帉鎻″畠浠箣闂寸殑宸埆錛岃兘璁╀綘鏇村ソ鍦版帶鍒跺畠浠紝杈懼埌鑷敱鐨勭悊鎯崇帇鍥姐?/p>
浜害鍊煎彲浠ヨ交鏉捐漿鎹負榛戠櫧鍥懼儚銆?/p>
璁$畻鍍忕礌鏈夋晥鐨勪寒搴﹀煎彲浠ヤ嬌鐢ㄤ笅闈㈢殑鍏紡錛?/p>
Y=0.3RED+0.59GREEN+0.11Blue
鐒跺悗浣跨敤 Color.FromArgb(Y,Y,Y) 鏉ユ妸璁$畻鍚庣殑鍊艱漿鎹?/p>
杞崲浠g爜鍙互浣跨敤涓嬮潰鐨勬柟娉曟潵瀹炵幇錛?br>C#
public Bitmap ConvertToGrayscale(Bitmap source)


{
Bitmap bm = new Bitmap(source.Width,source.Height);
for(int y=0;y<bm.Height;y++)

{
for(int x=0;x<bm.Width;x++)

{
Color c=source.GetPixel(x,y);
int luma = (int)(c.R*0.3 + c.G*0.59+ c.B*0.11);
bm.SetPixel(x,y,Color.FromArgb(luma,luma,luma));
}
}
return bm;
}
Public Function ConvertToGrayscale()Function ConvertToGrayscale()Function ConvertToGrayscale()Function ConvertToGrayscale(ByVal source As Bitmap) as Bitmap
Dim bm as new Bitmap(source.Width,source.Height)
Dim x
Dim y
For y=0 To bm.Height
For x=0 To bm.Width
Dim c as Color = source.GetPixel(x,y)
Dim luma as Integer = CInt(c.R*0.3 + c.G*0.59 + c.B*0.11)
bm.SetPixel(x,y,Color.FromArgb(luma,luma,luma)
Next
Next
Return bm
End Function
const DWORD ALIGN_CORRECTION =0x1000;// this big value is e.g. needed for WATCOM compiled files1銆灝咰string杞垚TCHAR*
StrToTchar(CString temString,TCHAR * pTchar)
{
int tmpLength=0 ;
tmpLength = temString.GetLength();
TCHAR * ptemTchar = temString.GetBuffer(tmpLength);
wcscpy( pTchar,ptemTchar);
}
錛掋鑾峰彇緋葷粺鏃墮棿
CString GetSysTime()
{//寰楀埌緋葷粺鏃墮棿
CString strTime;
SYSTEMTIME st;
::GetLocalTime(&st);
TCHAR datetime[20];
TCHAR times[20];
GetDateFormat(LOCALE_USER_DEFAULT,NULL,&st,_T("yyyy-MM-dd"),datetime,20);
GetTimeFormat(LOCALE_USER_DEFAULT,NULL,&st,_T("HH:mm:ss"),times,20);
strTime = (CString)datetime + _T(" ")+(CString)times;
return strTime;
}
CTime t = CTime::GetCurrentTime();
SelfInfo[8] = IntToStr(t.GetYear());
SelfInfo[9] = IntToStr(t.GetMonth());
SelfInfo[10] = IntToStr(t.GetDay());
錛撱鍐欐棩蹇?/p>
void Writelog(char *str)
{
FILE *fp;
fp = fopen("\\Storage\\LogFile.txt","w+");
if(!fp)
{
return;
}
fprintf(fp,"%s\n",str);
fclose(fp);
return;
}
#include <string>
using namespace std;
#include <sstream>
#include <iostream>
#include <stdlib.h>
string getstring ( const int n )
{
}
string 杞?CString
CString.format(”%s”, string.c_str());
char 杞?CString
CString.format(”%s”, char*);
char 杞?string
string s(char *);
string 杞?char *
char *p = string.c_str();
CString 杞?string
string s(CString.GetBuffer());
1錛宻tring -> CString
CString.format(”%s”, string.c_str());
鐢╟_str()紜疄姣攄ata()瑕佸ソ.
2錛宑har -> string
string s(char *);
鍙兘鍒濆鍖栵紝鍦ㄤ笉鏄垵濮嬪寲鐨勫湴鏂規渶濂借繕鏄敤assign().
3,CString -> string
string s(CString.GetBuffer());
GetBuffer()鍚庝竴瀹氳ReleaseBuffer(),鍚﹀垯灝辨病鏈夐噴鏀劇紦鍐插尯鎵鍗犵殑絀洪棿.
銆奀++鏍囧噯鍑芥暟搴撱嬩腑璇寸殑
鏈変笁涓嚱鏁板彲浠ュ皢瀛楃涓茬殑鍐呭杞崲涓哄瓧絎︽暟緇勫拰C鈥攕tring
1.data(),榪斿洖娌℃湁”\0“鐨勫瓧絎︿覆鏁扮粍
2,c_str()錛岃繑鍥炴湁”\0“鐨勫瓧絎︿覆鏁扮粍
3錛宑opy()
鈥斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺?/p>
CString涓巌nt銆乧har*銆乧har[100]涔嬮棿鐨勮漿鎹? -
CString涓巌nt銆乧har*銆乧har[100]涔嬮棿鐨勮漿鎹? -
CString浜掕漿int
灝嗗瓧絎﹁漿鎹負鏁存暟錛屽彲浠ヤ嬌鐢╝toi銆乢atoi64鎴朼tol銆?br>鑰屽皢鏁板瓧杞崲涓篊String鍙橀噺錛屽彲浠ヤ嬌鐢–String鐨凢ormat鍑芥暟銆傚
CString s;
int i = 64;
s.Format(”%d”, i)
Format鍑芥暟鐨勫姛鑳藉緢寮猴紝鍊煎緱浣犵爺絀朵竴涓嬨?/p>
void CStrDlg::OnButton1()
{
// TODO: Add your control notification handler code here
CString
ss=”1212.12″;
int temp=atoi(ss);
CString aa;
aa.Format(”%d”,temp);
AfxMessageBox(”var is ” + aa);
}
sart.Format(”%s”,buf);
CString浜掕漿char*
///char * TO cstring
CString strtest;
char * charpoint;
charpoint=”give string a value”;
strtest=charpoint;
///cstring TO char *
charpoint=strtest.GetBuffer(strtest.GetLength());
鏍囧噯C閲屾病鏈塻tring,char *==char []==string
鍙互鐢–String.Format(”%s”,char *)榪欎釜鏂規硶鏉ュ皢char *杞垚CString銆傝鎶奀String杞垚char *錛岀敤鎿嶄綔絎︼紙LPCSTR錛塁String灝卞彲浠ヤ簡銆?/p>
CString杞崲 char[100]
char a[100];
CString str(”aaaaaa”);
strncpy(a,(LPCTSTR)str,sizeof(a));