[問題] 關於字串運算

看板C_and_CPP (C/C++)作者 (閒散懶人)時間14年前 (2011/09/25 17:47), 編輯推噓4(406)
留言10則, 6人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++ 2010 問題(Question): 在程式碼例1跟例2裡 只是簡單的將字串和在一起 為何在例2裡會出現編譯錯誤的訊息? 和例1的差別在何處? 程式碼(Code):(請善用置底文網頁, 記得排版) 例1 const std::string hello = "Hello"; const std::string message = hello + ", world" + "!"; 例2 const std::string exclam = "!"; const std::string message2 = "Hello" + ", world" + exclam; -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.254.16.42

09/25 17:58, , 1F
因為有const,所以不能更改
09/25 17:58, 1F

09/25 17:59, , 2F
不對...問題在於 "Hello" + ", world" 是 char * + char *
09/25 17:59, 2F

09/25 18:00, , 3F
hello + ", world" 是 std::string + char * 所以可以去找
09/25 18:00, 3F

09/25 18:00, , 4F
std::string 的 operator + (char *) 出來做事
09/25 18:00, 4F

09/25 18:00, , 5F
但 char * + char * 一來不合法 二來也不能重定義
09/25 18:00, 5F

09/25 19:39, , 6F
感謝樓上的解釋 雖然還不是很懂
09/25 19:39, 6F

09/25 20:35, , 7F
主要就是operator沒這個定義 自己OVERLOAD就可以了
09/25 20:35, 7F

09/25 22:19, , 8F
究竟為什麼 C++ 沒有自己的 string literal 啊...
09/25 22:19, 8F

09/25 22:42, , 9F
C-Style 字串不是用+號,直接寫 str = "Hello " "World";
09/25 22:42, 9F

09/26 12:01, , 10F
......七樓有看到我說的不能重定義嗎 = =a
09/26 12:01, 10F
文章代碼(AID): #1EVlYatl (C_and_CPP)
文章代碼(AID): #1EVlYatl (C_and_CPP)