我需要搜索一个c字符串数组以寻找子字符串。
我创建了我认为会给我回答的答案,但它只是在语法上正确但在语义错误,但我不确定我哪里出错。
还有一个子问题。在向您展示我尝试过的示例后,我会问这个问题。
#include <boost/algorithm/string/find.hpp>
const char Months[12][20] = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
void Test()
{
typedef boost::iterator_range<boost::range_iterator<const char [20]>::type > constCharRange;
boost::iterator_range<char const *> ir = find_first("January", months);
}
ir.first == ir.last
迭代器的结果显示我没有正确地写这个。
我不确定第一个参数实际上是const char [8]
是否会产生不利影响。
我的主要问题我应该怎么做才能纠正它,补充问题是如何从constCharRange或任何类似的typedef中提取find_first所需的类型。
修改
我看到我错误地使用了结尾。然后,我设法得到稍微不同的示例,但它们与我实际必须使用的定义不兼容(我可以添加到代码但不更改现有定义)。
const std::string Months[]= { /*same data as before*/
void StringTest2()
{
const std::string* sptr =0;
sptr = std::find(boost::begin(Months), boost::end(Months), std::string("February"));
if (sptr)
{
string sResult(*sptr);
}
}
另一项测试
const char* Months[]= { /*same data as before*/
void StringTest3()
{
const char **sptr = std::find(boost::begin(Months), boost::end(Months), "February");
if (sptr)
{
string sResult(*sptr);
}
}
这是我可以得到的最近的,但我似乎无法获得返回类型规范正确
void StringTest4()
{
const char Months[12][20]Months[]= { /*same data as before*/
std::find(boost::begin(Months), boost::end(Months), "February");
}