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:給陣列傳回用,直接宣告編譯不會過.
沒有留言:
張貼留言
請提供您的寶貴意見 ;-)