Ansistring的類型轉換與使用

來源:互聯網
上載者:User
//Ansistring 轉 charvoid __fastcall TForm1::Button1Click(TObject *Sender){    AnsiString Test = "哈哈";    char *chr = Test.c_str();}//char轉Ansistring#include <windef.h>void __fastcall TForm1::Button1Click(TObject *Sender){    AnsiString str = "Sample";    char chr[MAX_PATH];    strcpy( chr , str.c_str() );}//Bool轉AnsiStringvoid __fastcall TForm1::Button1Click(TObject *Sender){    AnsiString Test=BoolToStr(CheckBox1->Checked);}//Ansistring轉boolvoid __fastcall TForm1::Button1Click(TObject *Sender){    AnsiString Test="-1"                    CheckBox1->Checked= StrToBool( Test );}//int轉ansistringvoid __fastcall TForm1::Button1Click(TObject *Sender){    int i = 123;    AnsiString str = IntToStr( i );}//AnsiString轉doublevoid __fastcall TForm1::Button1Click(TObject *Sender){    AnsiString Test = "123";    long double d = StrToFloat( Test );}//double轉AnsiStringvoid __fastcall TForm1::Button1Click(TObject *Sender){    double d = 123.456;    AnsiString str = FloatToStr( d );}//double轉AnsiString並四捨五入void __fastcall TForm1::Button1Click(TObject *Sender){    long double d = 123.456121212;    AnsiString str = FloatToStrF( d , ffFixed ,5 , 4 );//說明FloatTostrF裡5代表從第幾個數位後一位開始四捨五入,4代表取4位小數。//執行後得到str是123.4600。:roll:}//double轉AnsiString使用類似vb的format函數void __fastcall TForm1::Button1Click(TObject *Sender){    double d = 123.456;    AnsiString str = FormatFloat( "000000.00" , d );} //得到 000123.45,當然你可以使用"# . , ; E+ E- xx"等符號,你自己試試  //AnsiString轉Tclor型void __fastcall TForm1::Button1Click(TObject *Sender){    AnsiString Test = "0x00FF8080";    TColor Col = StringToColor( Test );}//Tcolor轉AnsiStringvoid __fastcall TForm1::Button1Click(TObject *Sender){    TColor Col = 0x00FF8080;    AnsiString str = ColorToString( Col );}//消除AnsiString 中的一部分字串 代碼:void __fastcall TForm1::Button1Click(TObject *Sender){    AnsiString Test = "ABCDEF";    int First = 3; // 消除制定開頭    int Length = 2;// 消除制定長度    AnsiString Dstr = Test.Delete( First , Length );}//得到ABEF//在AnsiString 中插入字串void __fastcall TForm1::Button1Click(TObject *Sender){    AnsiString Test = "ABCDEF";    AnsiString Ins = "12345"; // 插入串    int Pos = 3;  // 在哪插    AnsiString Istr = Test.Insert( Ins , Pos );//得到AB12345CDEF}//取得ansi某一位字元void __fastcall TForm1::Button1Click(TObject *Sender){    AnsiString Test = "ABCDEF";    AnsiString Npos = Test[3];//得到C}//取得AnsiString裡最後一個字元void __fastcall TForm1::Button1Click(TObject *Sender){    AnsiString Test = "ABCDEF";    char *Lstr = Test.AnsiLastChar();//得到F}//取出AnsiString字元,這個類似vb的mid函數!void __fastcall TForm1::Button1Click(TObject *Sender){    AnsiString Test = "ABCDEF";    int First = 3; // 3開始取    int Length = 2;// 取2位    AnsiString Getstr = Test.SubString( First , Length );//得到CD} //AnsiString的字母比較void __fastcall TForm1::Button1Click(TObject *Sender){    AnsiString Test = "ABCDEF";    AnsiString Sample = "abcdef";    int Result = Test.AnsiCompare( Sample );//返回1,不同!分大小寫。}void __fastcall TForm1::Button1Click(TObject *Sender){    AnsiString Test = "ABCDEF";    AnsiString Sample = "abcdef";    int Result = Test.AnsiCompareIC( Sample );//返回0,相同!沒有分大小寫,哈哈}

unsigned char *c1=(str).c_str(); 
說了多少遍了,不要這樣用。

先不說AnsiString和char*的問題,我覺得初學者首先要記住的就是對記憶體的管理,大多數情況下誰分配(new)的就由誰來釋放(delete)。 
AnsiString是一個類(class),它在內部實現了對記憶體的管理,使用者不必去理會。
char*是一個指標(pointer),指向一塊記憶體,所以使用者必須負責它的分配和釋放。
AnsiString.c_str() 返回的是類實體所管理的記憶體,第1這個地址可能會改變,第2對塊記憶體的操作可能會破壞類的結構。

不使用中間變數只是一個習慣問題,並不是一定不能這麼做,至少在文法是沒有問題的。
就像把變數都命名為a,b,c...一樣,雖然可以,但不建議這樣做,也幾乎沒有程式這樣做,除了一些不友好的小例子。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.