【发布时间】:2012-02-27 18:55:17
【问题描述】:
我想知道有人可以帮我实现这个方法,而我不需要使用 std::string。
该方法有两个参数,一个是char数组,另一个是char数组的大小。
传递的参数将是一个由逗号分隔的不同值的数组,例如"Rule1,Rule2,Rule3,Rule4,AT,T,Cat,Dog"。
成员变量“m_rulesSet”是一个包含模拟值的std::string。我想比较两者以检查“名称”是否在 std::string "m_ruleSet"
bool
Matche(const char *str, size_t strSize)
{
std::string target(str, strSize);
if(m_ruleSet.empty())
{
return true;
}
if((NULL == str) || (strSize <= 0))
{
return false;
}
const char * ptr =0;
const char * start = target.c_str();
while ((ptr = strchr(start, ',')) != 0)
{
std::string name(start, ptr - start);
if(name ==m_ruleSet)
{
return true;
}
start = ptr + 1;
}
if(*start)
{
std::string name(start);
if(name==m_ruleSet)
{
return true;
}
}
return false;
}
任何帮助将不胜感激,在此先感谢您
【问题讨论】:
-
这个方法应该做什么?你哪里有问题?
-
其实应该正好相反。你应该想要使用
std::string而不是C字符串。 -
@netcoder:显然,
std::string并不总是最好的选择。特别是如果此功能是应用程序的瓶颈之一。 -
如果他想定位一个使用 STL 不实用的平台怎么办? (例如 Android 直到最近)
-
根据我的经验,使用 STL 字符串导致的大多数性能问题都来自于错误地使用 STL 字符串。就像,据我所见,在上面的代码中。
标签: c++