標題:

C++ string class問題

發問:

想請教一個比較基本的觀念問題:當我看到:#inlcude 代表我將string 這個class包含到我的程式檔裏.這跟我熟悉的C一樣沒什麼問題.using std::string 上頭的string是class,這裏的呢?怎麼去稱呼它? 像using std::cout ,cout是一個定義在iostream裏的"指令"嗎?可不可以將它定位在C中printf這的格式化輸出的指令?然而,在string 這個class中,我的C++... 顯示更多 想請教一個比較基本的觀念問題: 當我看到: #inlcude 代表我將string 這個class包含到我的程式檔裏.這跟我熟悉的C一樣沒什麼問題. using std::string 上頭的string是class,這裏的呢?怎麼去稱呼它? 像using std::cout ,cout是一個定義在iostream裏的"指令"嗎?可不可以將它定位在C中printf這的格式化輸出的指令? 然而,在string 這個class中,我的C++ Primer這本書裏有介紹到getline(),empty(),size()等,這些跟及 std::string的關係又為何? getline(),empty()及size()可以稱作函式嗎?是不是這些函式被定義在string 這個class裏面? 而透過string class 型别定義的"變數"好了...例如: string st("test string"); st.empty(); // 這即是將st這個字串的內容當作"參數"傳到empty()這個函式裏,這樣解釋ok嗎? " . "這個點在這行程式裏我們又怎麼稱呼它? "::"這四個戒疤叫'scope"吧...那麼那一點(珠沙好了)呢? 另外還有getline(cin,st)之類的用法,我想應該是跟C++中的那兩個 ++有很大的關係,以我目前對物件導向主要的精神的了解程度,可能還不適合我去深究. 麻煩前輩提點一下,謝謝 更新: 第一次用這個介面,不是很確定怎麼用...用錯了別見怪!! 213可以的話再請問: 因為empty()是string的成員函數,經由string類別宣告的物件,屬於類別物件,所以這物件可以使用類別中的公開成員去存取私用員! //補充有長度限制...用接的看看 更新 2: //接上面 你的意思是,getline(),empty(),size()函數是在string 這個class 裏為Private,不公開的函數,而透過 string st;將 st設成是string class中的公開成員,所以當公開成員需取用不公開的函數時用" . "這個符號來表示? 或是 更新 3: //接上面 getline(),empty(),size()函數是在string 類別裏的函數,凡是由類別(class)定義所宣告的類別成員,如例中的st,要取用class裏的函數皆必須(或可以)用st.empty()的方式來取用?? 那有沒有st.getline()這樣的用法? 不好意思,這本書我己經看了近百頁了,但是並沒有一個很明確說明各個相互之間的關係(也有可能那個太深不適合初學者現在去了解), 只是我希望往下看時很清楚書說表示的意思是什麼?

最佳解答:

using std::string,這種用法叫名稱空間,其中的::稱為範圍解析運算子,這意思是宣告使用屬於std名稱空間下的string功能! getline(),empty(),size()這三個是string類別下可用的函數功能! st.empty(),指使用物件st的empty功能! 因為empty()是string的成員函數,經由string類別宣告的物件,屬於類別物件,所以這物件可以使用類別中的公開成員去存取私用員! getline(cin,st),這是內定格式用法,getline(cin, 變數); 其中括號內的兩個都屬於引數,函數內的程式可能經由抽取運算子>>加另外處理方式來取得包含空白的變數內容! 類似重載抽取運算子>>讓它具有將空白視為同一字串中的有效字元的能力! 一般cin抽取命令會將空白視為字串的切割點 2008-11-26 08:24:30 補充: st.empty()並不是將不公開的變成公開,只是字串物件st運用empty()的功能操成物件的表示而已! 另外,物件並不是類別,是由類別模組創造的物件,所以物件並沒有所謂的公開不公開權限差別! .符號通常用在存取類別成員,例如st.len,len是類別中物件的字串字數長度屬性! 他是一個指標運用,點(.)的意思是指向由類別建構的物件的成員! 還有另一個運算符號是(->)! 成員與外部函數間的關係是,外面的函數可以使用類別的公開成員,公開成員可以使用私用成員! 2008-11-26 08:36:08 補充: 您第三個補充問題 類別成員與物件不同,整個類別是物件的模子,物件由這個模子印出來,其中的成員是物件的特性及建構物件的方法,或操作物件的工具! sorry 我的三本書中沒有提到getline(),empty(),size()的物件操作方式,所以無法告知您這方面的資訊,不過您倒可以自行測試看是不是能這樣用,但要依這三個函數的語法來操作,如getline()是getline(cin, st),有時他們是獨立的物件操作函數,有時是取得物件特性的方法,第一種用法並不能是st.getline(cin, st)!

其他解答:746FFA66609DA332
arrow
arrow

    陳萱文悄稅陵貫莽 發表在 痞客邦 留言(0) 人氣()