看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) code::block 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 爲什麼可以直接相加? 程式碼(Code):(請善用置底文網頁, 記得排版) #include <iostream> #include <string> using namespace std; int main() { string s1 ,s2; while(cin >> s1 ) { for(int i = 1 ; i <= s1.length() ; i++) { s2 += s1[s1.length()-i] ; } if(s1==s2) cout << "yes" << endl ; else cout << "no" << endl ; s2 = ""; } return 0; } 補充說明(Supplement): 小弟在高中生解題系統上練習,本來是用getline的想法去寫 可是在google後找到這段程式碼,請教各位先進 爲什麼可以直接s2+=s1[s1.lenght()-1],好抽象 懇請各位解惑 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.122.14.27
littleshan:因為string這個class有對+=進行operator overload 08/20 16:43
littleshan:所以當你對string使用+=時,實際上是去呼叫另一個函式 08/20 16:43
littleshan:然後真正的字串操作是在那個函式中處理的 08/20 16:43
handsome616:請問"那個函式"是指哪個不大懂? 08/20 16:45
handsome616:是指說operator嗎 08/20 16:47
littleshan:你有書嗎?去看operator overloading那部份應該就懂了 08/20 16:49
handsome616:謝謝,在努力研讀 08/20 16:54
Yshuan:這的確很抽象 讀一下string class吧 08/20 17:27
DarkPrincex:這段程式碼感覺蠻糟的...還是不要用比較好... 08/20 17:39
uranusjr:迴文檢查有很多種寫法, 效率這麼低的我還是第一次看到... 08/20 18:43
uranusjr:好吧說第一次看到有點太誇張了, 不過真的不是很好... 08/20 18:44
ericinttu:string compare? string ==? 08/20 18:49
handsome616:uranusjr大大能否提供程式碼學習學習 08/20 20:46
lsc36:用char做比較好吧... 08/20 23:13
handsome616:對耶 沒想到 08/21 00:38