看板 C_and_CPP 關於我們 聯絡資訊
既然都用 C++ 了, 就用 C++ 字串吧 #include <string> ... // 有更好的初始化方法, 不過這裡不管 std::vector<std::string> v; v.push_back("dog"); v.push_back("cat"); v.push_back("apple"); if (std::find(v.begin(), v.end(), std::string(keyword)) != v.end()) { // ... } 或者, 如果你真的一定要用 char *, 就要自己跑迴圈來找了 #include <cstring> ... bool found = false; for (std::vector::<char *>::iterator i = v.begin(); i != v.end(); ++i) { // 請務必確認 keyword 安全無虞 if (strcmp(*i, keyword) == 0) { found = true; break; } } if (found) { // ... } ※ 引述《leondemon (狗狗)》之銘言: : 我在開發 ObjC (iOS) 因為某種原因,必須使用到 C++ 的 Array (Vector) : 由於我是 C++ 的新手 有一些問題想請教 : 我使用了 vector 來存放 C 語言的 const char* 如下: : // 宣告一個 CPPCharArray 型別,用來存放 const char* : typedef std::vector<const char*> CPPCharArray; : 然後初始化這個 vector : CPPCharArray v = {"dog", "cat", "apple"}; : 目前必須要使用這個 vector 來檢查是否含有一個 C 字串 : char *keyword = ... : if (std::find(v.begin(), v.end(), keyword) != v.end()) { : // The vector contains this C string. : } : 我發現這個方法比對 似乎是比較 item 的值 (位址) : 若該 keyword 是使用 concat 在 runtime 串接起來的字,在比對上時會被認為不同 item : 我有找到 find_if 的 function : 但 find_if 不支援 C Block,不知道要怎麼把 keyword 傳入該 function 內 -- Les grandes et les meilleurs tone from "Zadok the Priest" Eine grosse stattliche Veranstaltung by F. Handel THE MAIN EVENT! These are the men Sie sind die Besten "Champions League" by Tony Britten THESE ARE THE CHAMPIONS! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.94.57 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1411726541.A.AE0.html ※ 編輯: uranusjr (140.112.94.57), 09/26/2014 18:18:46
leondemon: 謝謝 u 大 09/28 20:00