亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ansistringapplicationmethod.txt

?? AnsiString的各種使用方法和詳細說明
?? TXT
字號:
AnsiString類 

VCL大量利用Pascal長字串數(shù)據(jù)類型,幾乎所有基于文本的VCL屬性都采用Pascal長字串。例如,Text、Name和Caption屬性都是Pascal長字串屬性。VCL的許多構(gòu)件方法和事件處理函數(shù)也采用Pascal長字串。
關(guān)于Pascal長字串數(shù)據(jù)類型要注意兩點。第一,Pascal長字串是真正的語言數(shù)據(jù)類型,而不象C/C++中一樣只是個字符數(shù)組。第二,C++內(nèi)部沒有Pascal長字串的對等類型。由于VCL大量使用Pascal長字串,而C++ Builder使用Pascal VCL,所以Borland生成一個C++類來近似Pascal長字串,這個類就是AnsiString類,可以代替Pascal長字串。
   AnsiString類的類名不易理解,你要在SYSDEFS.H中采用如下語句:
typedef AnsiString String;這樣就可以在聲明AnsiString類的實例時用名稱String而不用正式類名AnsiString類:
   由于String是AnsiString類的別名,所以不必在C++ Builder程序中再用AnsiString類名(當然,還可以這么用)。為了清晰起見,我在
文本中使用AnsiString類名,而在代碼例子中使用縮略形式String。
   AnsiString類是功能很強的字串類。AnsiString類構(gòu)造器可以從Char、Char*、int或double生成AnsiString類對象。這些構(gòu)造器很容易
將直接字串賦予AnsiString類并將整數(shù)或浮點數(shù)變成字串。下列例子顯式或隱式使用AnsiString類構(gòu)造器:
String FloatString = 127.123;
String AnotherFloatString(0.999);
String IntString = 49;
String CharString = 'A';
Labell>Caption = "This is a test";
double d = 3.14 * 20;
Edit1>Text = d;
也許你對細節(jié)不感興趣,但需要直接賦值時,C++編譯器在后臺采用相應(yīng)的AnsiString構(gòu)造器。以下列語句為例:
String S = 127.123; // create an AnsiString from a double
編譯器在后臺產(chǎn)生如下語句:
String S = String((double)127.123;
因此,AnsiString構(gòu)造器在直接賦值時要進行換算。上述代碼可以工作的另一原因是AnsiString類重載了賦值操作符(=)。AnsiString還重載了接合(+操作符)和測試等式(==操作符)等操作符,從而簡化工作。AnsiString類和其它C++類一樣,有許多使字串操作更方便。
下表列出幾個最常用的AnsiString方法,如果需要AnsiString方法的完整清單,請看C++ Builder聯(lián)機幫助。
C_str 返回字串的數(shù)據(jù)的指針(char*)
Delete 刪除字串的一部分  Delete(1,2)  從第一位開始,刪除連續(xù)兩個字符
Insert 在現(xiàn)有字串的指定位置插入文本
Length 返回字串長度,不包括終止NULL
LowerCase 將字串變成小寫
Pos 返回搜索字串在字串中的位置
SubString 返回字串中從指定位置開始、指定長度的子串
ToDouble 將字串變成浮點數(shù),如果無法將字串變成浮點數(shù),則扔出異常
ToInt 將字串變成整數(shù),如果無法將字串變成整數(shù),則扔出異常
ToIntDef 將字串變成整數(shù)并在不能換算時提供缺省值而不扔出異常
Trim 刪除字串前后的空格
UpperCase 將字串變成大寫
   其中幾個方法需要特別說明。一個是c_str()方法,這個奇怪的方法名用于要取得AnsiString的字串緩沖區(qū)指針時。為什么要這么干呢?有些
Windows API函數(shù)需要char*參數(shù)。AnsiString是個類,不能直接將AnsiString傳遞給需要字符數(shù)組指針的函數(shù)。例如,如果使用Windows API函數(shù)DrawText(),則要用如下代碼:
RECT R
Rect(0,0,100,20);// first,the C waychar 
buff[]="This is a test";
DrawText(Canvas>Handle,buff,1,&R,DT_SINGLELINE);
// now the VCL way
String S ="This is a test";
DrawText(Canvas>Handle,S.c_str(),1,&R,DT_SINGLELINE);
DrawText()函數(shù)的第二個參數(shù)需要字串緩沖區(qū)指針,這就要靠c_str()方法提供。如果不理解,可以等以后再回頭理解。
目前不必對DrawText()太費心。這個例子說明VCL將你從WindowsAPI函數(shù)隔離開,而又還能使用Windows API函數(shù)。深入Windows編程時,有時會需要Windows API函數(shù),這時Windows API函數(shù)很有現(xiàn)成。
另一個AnsiString方法是ToInt()。這個方法將字串變成整數(shù)。假設(shè)窗體上有個編輯構(gòu)件要向用戶取整數(shù)值,由于編輯構(gòu)件只能放文本,所以需要將字串變成整數(shù)。方法如下:
int value = Edit1>Text.ToInt();
ToDouble()方法的用法也一樣。注意,如果不能換算,這兩個方法都會扔出異常。
有幾個AnsiString方法不是作用于字串本身,而是返回新的字串。以UpperCase()方法為例,可以用下列代碼將字串變成大寫嗎?
String FileName = "c:\mystuff\mydata.dat";
FileName.UpperCase();
不可以,因為UpperCase()方法返回新字串,而不是作用于字串本身。正確的方法如下:
FileName= FileName.UpperCase();
使用AnsiString方法前,先從聯(lián)機幫助看看這些方法如何操作。另外,記住雙反斜杠。另一個AnsiString方法是我所不喜歡的,F(xiàn)ormat()方法可以象Sprintf()函數(shù)一樣用變量建立字串。
Sprintf()函數(shù)的例子:
char buff[20];
int x = 10 * 20;
sprintf(buff, "The result is: %d",x);
這個代碼建立內(nèi)容為"The result is:200"的字串。
這個工作也可以用AnsiString方法Format()完成:
String s;
int x = 10 * 20;
S = S.Format( "The result is: %d",OPENARRAY(TVarRec,(x)));
夠難看的。這個函數(shù)有其存在的原因,但我從來不用Format()方法,一個原因是我記不住這古怪的語法,另一原因是Sprintf()函數(shù)更方便。AnsiString格式化的方法如下:
int x = 10 * 20;
char buff[20];
sprintf(buff, "The result is: %d",x);
String S= buff;
顯然,這個方法并不優(yōu)雅,但Format()也好不到哪里,讀者可以自選其中一個方法。
AnsiString類還一個怪事值得一提。索引操作符([])可以引用字串的特定元素:
String S = "Hello World!";
Label1>Caption = S[7];
這個代碼將字符W賦予標題構(gòu)件的Caption屬性。這里要指出的是,字串的第一個元素在數(shù)組索引1處,而不象其它C++數(shù)組一樣在數(shù)組索引0處.基數(shù)為1的索引主要是為了與Delphi兼容。這一次也許會讓C++編程老手頭痛一陣子.  

AnsiString類是BCB中最常見類之一,了解它對以后深入學(xué)習(xí)BCB大有幫助原來關(guān)于這個類的提出的問題有很多,現(xiàn)總結(jié)如下。加上我個人的經(jīng)驗,湊出了一篇關(guān)于這個類的最常用方法屬性的介紹,希望能對各位有所幫助

常用方法:
  1. char* c_str()
  返回一個字符串指針,他指向的內(nèi)容和AnsiString中包含的字符串的內(nèi)容一致(BCB幫助中就是是這樣解釋這個方法的,關(guān)于它更詳細的討論見后文)
  Example:
  AnsiString str = "Hello World!";
  MessageBox(NULL,str.c_str(),"",MB_OK);   //顯示一個消息框

  2.AnsiCompare(AnsiString& rhs)
    operator == (AnsiString& rhs)
  都用來比較兩個AnsiString的內(nèi)容是否相同,兩者的區(qū)別在于當內(nèi)容相等的時候前者返回0,而后者返回true

  3.int Length()
  很簡單,返回字符串長度

  4.char & operator [](const int idx)
   返回字符串中第idx個字符
  注意:這個地方不知道BCB怎么想的,可能是為了照顧Delphi程序員的習(xí)慣吧卻給C程序員造成了一點小小的麻煩:和C中數(shù)組的用法不兼容,也就是說當idx為0的時候,BCB會拋出一個異常,而不是返回第一個字符!要得到第一個字符,idx應(yīng)該為1
  Example:
  AnsiString str = "Hello World!";
  char byte = str[2];
  //byte等于'e' 而 不等于'l'
  ps.下面的介紹,只要是關(guān)于第X個字符的,都和這里一樣,不再重復(fù)
    
  5.AnsiString SubString(int index, int count)
  返回從第index個字符開始,長度為count子串
  Example:
  AnsiString str = "Hello World!";
  MessageBox(NULL,str.SubString(7,5).c_str(),"",MB_OK);  //顯示內(nèi)容為 World

  6.int Pos(AnsiString& subStr)
  查找內(nèi)容為subStr的字串,如果有,返回字串的第一個字符位置 如果沒有,返回0

  7.int ToInt()
    int ToIntDef(int defaultValue)
  返回當前字符串轉(zhuǎn)化為整數(shù)的結(jié)果,不同點在于,當不能轉(zhuǎn)化時,前者拋出一個異常,而后者返回defaultValue,嘿嘿,偶喜歡后者

  8.AnsiString LowerCase()
    AnsiString UpperCase()
  返回當前字符串轉(zhuǎn)化為小寫/大寫的結(jié)果
  注意,它們只是返回一個新的AnsiString,原來字符串的內(nèi)容沒有變化

  9.AnsiString& sprintf(char *, ...)
  利用sprintf強大功能格式化當前字符串,詳細用法請參考sprintf或者printf

  其它一些操作符:+  +=  >=  >  <  <=  !=
  這些不用解釋了吧……


深入探討:

  1.關(guān)于c_str()的返回值問題.
  能否用這個返回值訪問/修改字符串中的內(nèi)容?
  Example:
  AnsiString a = "I want to modify this using pointer";
  char *p = a.c_str();
  p[0] = 'i';
  ........           //指針操作
  ShowMessage(a);
  雖然BCB的幫助表明 c_str()這個函數(shù)的返回值(char*)只在它所在表達式內(nèi)有效,
  但是以上代碼有時候卻可以完成預(yù)期的目的
  個人極力反對用這種方法來改變字符串的內(nèi)容,因為AnsiString自帶的方法已經(jīng)能夠十
分有效的完成指針操作
  比如上面的例子中 p[0] 可以用 a[1] 來代替
  合并字符串可以用 + 或者 += 來替代
  還有查找,插入,刪除等,都可以在幫助中找到AnsiString類中對應(yīng)的方法來實現(xiàn)

  2.Unicode的支持
  由于AnsiString非模板類
  除了WideChar方法外,AnsiString好像不支持Unicode
  但是不知道為什么里面會有ByteType這個方法

  3.很有意思的方法
  Unique()
  LastDelimiter()
  不常用,但是我覺得是十分有意思的函數(shù)
  怎么用,可以參考幫助

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美性一级生活| 国产一区二区三区美女| 欧洲国内综合视频| 一区二区三区免费网站| 欧美色综合久久| 日韩在线一区二区| 精品国产免费人成电影在线观看四季 | 欧美xxxxxxxx| 国产精选一区二区三区| 中文字幕在线免费不卡| 欧美性色综合网| 九色综合国产一区二区三区| 久久只精品国产| 91美女在线看| 免费久久99精品国产| 国产人成一区二区三区影院| 91久久国产综合久久| 蜜桃av一区二区| 夜夜嗨av一区二区三区四季av| 95精品视频在线| 日产国产欧美视频一区精品| 国产偷国产偷亚洲高清人白洁| av成人免费在线观看| 日韩精品电影一区亚洲| 国产欧美精品日韩区二区麻豆天美| 99re66热这里只有精品3直播| 性欧美大战久久久久久久久| 国产欧美日韩另类视频免费观看| 在线观看国产一区二区| 国产一区二区三区| 亚洲制服丝袜一区| 久久久精品黄色| 欧美日韩午夜在线| 国产91精品精华液一区二区三区| 亚洲一区二区三区中文字幕在线| 久久综合成人精品亚洲另类欧美| 欧美色成人综合| 国产jizzjizz一区二区| 日日摸夜夜添夜夜添亚洲女人| 亚洲国产精品黑人久久久 | 日韩欧美aaaaaa| 色综合久久久久| 狠狠色丁香婷综合久久| 亚洲国产欧美在线| 国产精品免费网站在线观看| 精品久久免费看| 欧美日韩国产首页在线观看| 99re热视频精品| 久久99精品久久久久久国产越南 | 国产精品免费丝袜| 久久综合久久久久88| 欧美日韩免费观看一区二区三区| 成人免费观看视频| 麻豆91精品91久久久的内涵| 亚洲成人精品一区二区| 亚洲精品国产第一综合99久久 | 日韩欧美电影在线| 678五月天丁香亚洲综合网| 91免费在线播放| 成人高清免费观看| 粉嫩一区二区三区在线看| 美国十次综合导航| 日韩av高清在线观看| 亚洲动漫第一页| 亚洲精品视频一区| 亚洲人一二三区| 国产精品短视频| 国产精品日产欧美久久久久| 亚洲国产成人一区二区三区| 久久嫩草精品久久久久| 精品av综合导航| 欧美精品一区二区在线播放| 日韩欧美国产麻豆| 精品国产伦一区二区三区观看体验| 日韩免费在线观看| 欧美成人三级在线| 欧美成人高清电影在线| 精品国产麻豆免费人成网站| 欧美精品一区二区三| 国产日产亚洲精品系列| 欧美激情一区二区三区不卡| 国产精品三级在线观看| 亚洲欧美日韩中文播放| 亚洲一区二区三区四区的| 亚洲一二三四区| 日本午夜精品视频在线观看| 日韩高清在线观看| 精品无人码麻豆乱码1区2区| 国产福利91精品一区| 成人免费高清在线| 91在线视频观看| 欧美伊人久久大香线蕉综合69| 欧美高清一级片在线| 欧美一区二区高清| 久久九九久久九九| 国产精品福利一区二区三区| 亚洲综合精品自拍| 久久精品99久久久| 国产91精品一区二区麻豆网站| 99re成人精品视频| 欧美一二三四区在线| 久久婷婷色综合| 亚洲人成人一区二区在线观看| 亚洲综合一区二区三区| 日韩电影免费在线看| 国产精一区二区三区| 日本道精品一区二区三区| 91超碰这里只有精品国产| 久久综合九色综合欧美98| 日韩美女精品在线| 久久超碰97中文字幕| 北条麻妃国产九九精品视频| 欧美老女人在线| 国产欧美日韩亚州综合| 亚洲国产精品视频| 高清在线不卡av| 88在线观看91蜜桃国自产| 国产精品欧美一区二区三区| 日韩成人一区二区三区在线观看| 高清国产一区二区| 宅男噜噜噜66一区二区66| 国产精品素人一区二区| 日韩av高清在线观看| 色综合久久综合| 久久精品这里都是精品| 亚洲成人一区在线| 99综合影院在线| 精品国产乱码久久久久久免费 | 日韩亚洲欧美在线| 亚洲欧美在线视频观看| 精品一区二区三区免费播放 | 欧美一二三四区在线| 日韩理论电影院| 国产成人在线影院| 日韩欧美激情四射| 香蕉成人啪国产精品视频综合网| 成人黄色小视频在线观看| 日韩欧美一二三四区| 亚洲第一精品在线| 色成人在线视频| 中文字幕一区三区| 国产精品正在播放| 精品久久人人做人人爽| 蜜臀国产一区二区三区在线播放| 91久久精品一区二区二区| 国产精品不卡在线| 国产v日产∨综合v精品视频| 久久综合色之久久综合| 美腿丝袜一区二区三区| 欧美精品日韩一本| 性久久久久久久久久久久| 色94色欧美sute亚洲线路一ni | 国产精品免费久久| 国产真实精品久久二三区| 欧美精品日韩综合在线| 性欧美疯狂xxxxbbbb| 欧美色手机在线观看| 亚洲国产欧美在线| 欧美日韩免费观看一区二区三区| 一区二区日韩电影| 欧美丝袜丝交足nylons图片| 亚洲影院理伦片| 欧美影片第一页| 亚洲一区二区五区| 欧美日韩一区二区欧美激情| 一级中文字幕一区二区| 91精品1区2区| 亚洲v中文字幕| 欧美日韩成人高清| 日本亚洲电影天堂| 日韩欧美成人一区| 国产伦精品一区二区三区免费| 精品少妇一区二区三区在线播放| 免费成人在线影院| 久久老女人爱爱| av在线播放不卡| 亚洲欧美日韩系列| 欧美三级电影在线看| 日产精品久久久久久久性色| 欧美一级黄色大片| 国产精品资源在线| 中文字幕制服丝袜成人av| 色94色欧美sute亚洲线路二| 亚洲成人在线免费| 欧美mv和日韩mv的网站| 成人18精品视频| 亚洲va天堂va国产va久| 日韩一区二区三区观看| 国产成人在线观看免费网站| 亚洲天天做日日做天天谢日日欢| 欧美日韩综合一区| 经典三级一区二区| 亚洲免费在线观看| 欧美一区二区三区啪啪| 国产成人亚洲综合a∨猫咪| 亚洲精品videosex极品| 日韩一级免费一区| 成人av在线播放网址| 日韩有码一区二区三区| 国产精品免费网站在线观看|