kowala's home

kowala's home
這裡是我的學習筆記,陸續增加中。
http://kowala21.blogspot.com

2013-05-26

BCB6 字串處理

BCB 本身提供一種字串形態 UnicodeString 很好用,也很容易轉型到其它型態,如 string, char... 等等,但本篇是要介紹古老的 std::string 用法,主要是用在函式間傳遞,理由是。。。我用習慣了 = =

以下分為兩個部分,第一是如何把字串傳址進去函式,然後函式幫您處理好,也不用還您,您就可以直接使用。
第二部分則是再進階,假如一個字串不夠用,那我就傳回一個字串陣列,這樣就夠酷吧,也許您可以再修改一下,就可以傳回自定義的結構資料。

先來看看結果,我只截取 API 上的 Memo 畫面,雖然有點醜,但不影響閱讀及程式的正確性。


第一部分、如何把字串傳址進去函式


第二部分、傳回一個字串陣列


最後,我還是把程式碼放在下面,方便複製使用。當然,Memo1 就是 BCB6 提供的文字集物件,這我就不說明了。

呼叫部分
//------------------------------------
    //測試字串傳址
    string str1;
    strTest1(str1);//傳址
    Memo1->Lines->Add(str1.c_str());

    //測試傳回字串陣列
    string *str2;//字串陣列
    str2=strTest2();//測試傳回字串陣列
    Memo1->Lines->Add(str2[0].c_str());
    Memo1->Lines->Add(str2[1].c_str());
    Memo1->Lines->Add(str2[2].c_str());
//-------------------------------------

函式部分
//--------------------------------------------------------------------
//測試字串傳址
void strTest1(string &str){
    str="測試字串傳址...";
}
//測試傳回字串陣列
typedef string * strArr;//給陣列傳回用,直接宣告編譯不會過
strArr strTest2(){
    string ss="測試傳回字串陣列...";
    string *str = new string[3];
    str[0]= "0:" ; str[0]+= ss;
    str[1]= "1:" ; str[1]+= "typedef string * strArr;";
    str[2]= "2:" ; str[2]+= "給陣列傳回用,直接宣告編譯不會過.";
    return str;
}
//--------------------------------------------------------------------

結果當然是秀出下面這樣

測試字串傳址...
0:測試傳回字串陣列...
1:typedef string * strArr;
2:給陣列傳回用,直接宣告編譯不會過.