Re: [问题] vector / const char*

楼主: uranusjr (←這人是超級笨蛋)   2014-09-26 18:15:38
既然都用 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 内
作者: leondemon (狗狗)   2014-09-28 20:00:00
谢谢 u 大

Links booklink

Contact Us: admin [ a t ] ucptt.com