[問題] 運用iterator將string中字元轉成大寫

看板C_and_CPP作者 (Wow)時間12年前 (2013/03/28 16:31), 編輯推噓4(402)
留言6則, 4人參與, 最新討論串1/1
看書看到一個練習 運用 iterators 將 string 中的字元轉換為大寫 我本來的寫法是這樣 for(string::iterator iter=x.begin(); iter !=x.end() ; iter++) cout << toupper(*iter); 可是這樣跑出來的結果是一大串的數字 如果改寫成 for(string::iterator iter=x.begin(); iter != x.end(); iter++) *iter = toupper(*iter); cout << x << endl; 這樣就可以成功的把小寫轉換成大寫。 不太理解這兩種寫法的差異 第一種方式是錯在哪裡呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.20.243.5 ※ 編輯: aaa595219 來自: 163.20.243.5 (03/28 16:32)

03/28 16:36, , 1F
第一種寫法改成 cout << (char)toupper(*iter); 也行
03/28 16:36, 1F

03/28 16:56, , 2F
初學者的錯誤喔 toupper是有回傳值為int型態
03/28 16:56, 2F

03/28 17:07, , 3F
可否改成 cout << x.toupper((*iter)) ; Try it!
03/28 17:07, 3F

03/28 17:19, , 4F
在linux下改成 cout << toupper(*iter).latin1();
03/28 17:19, 4F

03/28 17:20, , 5F
感謝提醒 我在來研究一下
03/28 17:20, 5F

03/28 22:19, , 6F
可以想想為什麼很多 input 為 char 的回傳值是 int XD
03/28 22:19, 6F
文章代碼(AID): #1HK__8QH (C_and_CPP)