【发布时间】:2011-12-22 07:44:38
【问题描述】:
我正在尝试测试 Stroustup 书中search() 的示例。
string quote("why waste time learning, when ignorance is instantaneous?");
bool in_quote(const string& s){
char* p = search(quote.begin(), quote.end(), s.begin(), s.end());
return p != quote.end();
}
void test(){
bool b1 = in_quote("learning"); // b1=true
bool b2 = in_quote("lemming"); // b2=false
}
但我收到以下错误:
error C2440: 'initializing' : cannot convert from
'std::_String_iterator<_Elem,_Traits,_Alloc>' to 'char *'
看起来返回类型不对。我也试过string::iterator,得到了同样的错误。那么,正确的类型应该是什么,它应该是容器的迭代器类型吗?谢谢
【问题讨论】:
-
如果你有 C++11,使用
auto。但看起来应该是std::string::iterator。当你尝试那个时,它的信息是什么?应该是不同的信息。 -
@ubbdd 迭代器不是指针。
-
顺便打开“输出”窗口查看完整消息。它应该会告诉你
_Elem的类型