c++查找函数find()异常

DannyPassante 2013-02-01 11:36:18
//代码如下//
#include <iostream>
#include <string>
using namespace std;

int main()
{
string name("the catche rin the rye");
string::type_size p=name.find("rye");
if(p=string::npos)
{
cout<<"the rye couldn't be find"<<endl;

}

else
cout<<"the rye find at p="<<p<<endl;
system("pause");
return 0;



}
//编译没错,但输出"the rye counldn't be find"//
...全文
494 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
奇趣科技 2013-02-01
  • 打赏
  • 举报
回复
引用 6 楼 rocktyt2 的回复:
string::type_size是什么?
关于string::size_type size_type其实是string模板类定义的一种类型之一,它与size_of的用法相似,只是它根据存储的类型返回字符串的长度.对于 string具体化,将根据char返回字符串的长度,在这种情况下,size_type与size_of等效.size_of是一种无符号类型. 你说的 size_type 其实就是 unsigned int 类型 其实并不正确,它要看其存储的类型. size_type实际上是做为解决string类设计上的严重失误而引入的。 size_type是在string类内定义的一个无符号整形类型,由于string类里很多方法的返回值都是size_type类型的,所以必须使用size_type进行类型声明。 如下: string a= "abcdefg "; string::size_type idx; idx = a.find( "h "); //not found,return string::npos if( idx == string::npos ) //check if not find { ..... } 由于npos为find返回的特殊值(-1),而不幸的是,size_type类型为unsigned int,所以 不同的编译器对npos的理解不同。 试想一下,用8字节来unsigned int 来表示-1和用4字节表示,值是完全不同的。 这可能是string类设计时的一个致命缺陷,为了兼容和可移植性, 特定义size_type类型,在不同编译器中,size_type的解释也不同,这样就做到了可移植。 以上内容可见 STL:11.2.12节。
rocktyt 2013-02-01
  • 打赏
  • 举报
回复
string::type_size是什么?
奇趣科技 2013-02-01
  • 打赏
  • 举报
回复
多检查检查吧,小错误。
xumaojun 2013-02-01
  • 打赏
  • 举报
回复
下次吧string::npos写前面,如果忘了就会报错。
shn521 2013-02-01
  • 打赏
  • 举报
回复
if(p=string::npos) { cout<<"the rye couldn't be find"<<endl; }
sublimepan 2013-02-01
  • 打赏
  • 举报
回复
引用 1 楼 turingo 的回复:
你把if(p==string::npos)中的==误写为=了,改为==就OK了。
图灵狗 2013-02-01
  • 打赏
  • 举报
回复
你把if(p==string::npos)中的==误写为=了,改为==就OK了。
赵4老师 2013-02-01
  • 打赏
  • 举报
回复
单步调试和设断点调试是程序员必须掌握的技能之一。
奇趣科技 2013-02-01
  • 打赏
  • 举报
回复
引用 8 楼 rocktyt2 的回复:
引用 7 楼 Trolltech 的回复:引用 6 楼 rocktyt2 的回复:string::type_size是什么? 关于string::size_type size_type其实是string模板类定义的一种类型之一,它与size_of的用法相似,只是它根据存储的类型返回字符串的长度.对于 string具体化,将根据char返回字符串的长度,……
囧,楼主居然写反了。。。。。。。。。。。。。。。。。
rocktyt 2013-02-01
  • 打赏
  • 举报
回复
引用 7 楼 Trolltech 的回复:
引用 6 楼 rocktyt2 的回复:string::type_size是什么? 关于string::size_type size_type其实是string模板类定义的一种类型之一,它与size_of的用法相似,只是它根据存储的类型返回字符串的长度.对于 string具体化,将根据char返回字符串的长度,在这种情况下,size_type与size……
你贴这段有什么用?哪里有出现type_size么?

65,189

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧