string类find函数返回值判定

string类型find()函数的运用 P1308 统计单词数 string类型find函数的运用与理解。 #include <cstdio> #include <iostream> #include <cstring> #include <algorithm> #include <stack> #include <set> #include <stri... 阅读详情

代码示例

  1. int main()  
  2. {  
  3.     string s = "Alice Bob Charlie";  
  4.     size_t position;  
  5.     position = s.find("none");  
  6.     if (position >= 0)  
  7.         cout << "Found! position is : " << position << endl;  
  8.     else  
  9.         cout << "Not found!" << endl;  
  10. }  

现象&后果

程序运行结果输出"Found! position is : 4294967295",但实际上所找的字符串"none"并不存在于字符串s中。

Bug分析

程序的目的是,在源字符串s中查找目的字符串,若找到,则显示"Found",并返回目标子串在源字符串中的位置;反之,若未找到,则返回"Not found"。string.find在未找到时会返回string::npos。

在C++中常量npos是这样定义的:

  1. static const size_t npos = -1; 

即常量npos定义的值为-1. 但又因为npos 的类型size_t是无符号整数类型,所以npos实际上是一个正数,并且是size_t类型的最大值。

上述代码中,把find函数返回的值赋给size_t类型的变量position,而size_t类型的变量position是永远大于等于0,所以即使find返回npos,if条件也为true。

正确的做法是在if条件中直接用npos作比较。

正确代码

  1. int main()  
  2. {  
  3.     string s = "Alice Bob Charlie";  
  4.     size_t position;  
  5.     position = s.find("none");  
  6.     if (position != string::npos)  
  7.         cout << "Found! position is : " << position << endl;  
  8.     else  
  9.         cout << "Not found!" << endl;  
  10. }  
C++中的find函数 我们在C++中使用的find函数一般都是algorithm库里面提供的或者 是STL容器里面的find函数。今天就来总结一下他们的使用与区别 添加链接描述 1. 容器里面的find函数 STL里面容器除了vector其他常见的容器都有自己实现成员函数find,例如string中的find函数,string的find()函数用于找出字母在字符串中的位置。 函数原型如下: //(1) size_t... 阅读详情

相关推荐

C++ string中的find()函数

1.string中find()返回值是字母在母串中的位置(下标记录),如果没有找到,那么会返回一个特别的标记npos。(返回值可以看成是一个int型的数) #include<cstring> #include<cstdio> #include<iostream> using namespace std; int main() { ////find函数返回类型 size_type string s("1a2b3c4d5e6f7jkg8h9i1a2b3c4d5

我不是码农的博客~~~ 2483

string的find( )函数✅

基本用法 string的find()函数用于找出字母在字符串中的位置。 find(str,position) str:是要找的元素 position:字符串中的某个位置,表示从从这个位置开始的字符串中找指定元素(不填第二个参数,默认从字符串的开头进行查找) 返回值为目标字符的位置,当没有找到目标字符时返回npos ...

Running Snail 3万+

2025年普通人转向人工智能运维(AIOps)学习建议(附最新技术实践与资源)

AIOps不仅是技术的叠加,更是运维流程的重构。建议通过“学习-实践-反馈”循环,逐步从工具使用者成长为解决方案设计者。如需完整资源链接,可访问上述推荐的优快云博客及GitHub仓库。

资深全栈架构师,乐于在 优快云 分享技术见解,与大家携手共进,共攀技术巅峰! 3096

String find函数(详解,很容易懂)

#include<cstring> #include<cstdio> #include<iostream> using namespace std; int main() { //find函数返回类型 size_type string s("1a2b3c4d5e6f7jkg8h9i1a2b3c4d5e6f7g8ha9i"); string flag; string::size_type position;//写成int也行 //find 函数 返回 "

qq_43738331的博客 2万+

STC15单片机实战项目软件开发第四讲 - 按键检测(状态机)

软件开发第四讲 - 按键检测(状态机) 一、工具链接 1、Keil c51 UV4 https://yunpan.360.cn/surl_yrIfYYmeRFk 2、STC-ISP下载软件 https://yunpan.360.cn/surl_yxH4CuUUvI3 二、学习板获取方式 方法1:自己设计PCB,自行打板焊接; 方法2:用群主设计的PCB,自行打板焊接; 方法3:向群主购买,淘宝链接...

硬件家园 3048

XGBoost与Embedding混合建模实战解析

在机器学习领域,特征工程与模型融合是提升预测性能的关键技术。Embedding技术通过将高维稀疏特征(如文本、ID类数据)转化为低维稠密向量,有效捕获语义关联;而XGBoost作为强大的集成学习算法,擅长处理结构化特征并进行自动特征组合。两者结合的混合架构(如Semantic Boosted Trees)在金融风控和推荐系统等场景中展现出显著优势,尤其在处理用户行为序列、商品ID等复杂特征时,相比传统方法能获得更好的模型效果。本文通过电商推荐和金融反欺诈等案例,详解如何实现Embedding+XGBoost

weixin_28718641的博客 326

C++ string中的find() 函数

例子:找到的情况 例子:找不到的情况,调试可以看到npos的值为-1,即是4294967295 其实find()函数返回类型为size_type(无符号类型unsigned int),此时pos=4294967295例子:此例子中,从str字符串的下标为1的位置还是寻找字串"a"

Ajekseg的博客 6534

neruolib全脑建模计算框架

neurolib 是一个用python编写的全脑建模计算框架,也是可扩展的、允许轻松实现自定义神经质量模型,能够在介观尺度上表示脑区平均活动。

Rootfyx的博客 1149

【DHU-oj-94求字符串的起始位置】

你是明明手下的一名软件工程师,明明分配给你一个任务,在两个字符串中,找到一个字符串在另一个字符串中的起始位置。例如,有两个字符串,一个字符串s= “abc”,另一个字符串subs=“bc”,现在就要找出“bc”在“abc”中的其实位置,在这个例子中,“bc”的起始位置为2。标准输入设备中有多组测试数据,每组测试数据两行,每组测试数据的第一行为字符串s,s的长度小于100,每组测试数据的第二行为字符串subs,subs的长度小于100,s和subs中仅包含小写字母和数字。睡一觉就自有分晓了,总之先做题!

m0_60756217的博客 290

Fiddler everywhere的一些基础操作

网上能搜到的Fiddler everywhere使用教程太少,于是我整理了一些自己实操成功的内容,包括Fiddler everywhere的Mock测试、弱网测试等基础操作,后续还会持续更新。操作系统:macOS使用工具:Fiddler everywhere 5.10.0本文简单介绍了使用Fiddler everywhere进行的Mock测试和弱网测试,而Fiddler everywhere提供了更多的其他实用的功能,我会在后期进行一个持续的学习和更新。

weixin_44346646的博客 2479

DreamerV3实战:如何用世界模型在Minecraft中自动挖钻石(附完整训练流程)

本文详细介绍了如何使用DreamerV3世界模型在Minecraft中训练AI智能体自动完成挖钻石的复杂任务。文章深入分析了该任务对强化学习的挑战,提供了从环境配置、模型训练到结果评估的完整实战流程,并分享了关键的调优技巧与问题解决方案,展示了基于模型的强化学习在解决稀疏奖励问题上的强大能力。

weixin_29050271的博客 192

C++String中的find用法

#include<string> string 是c++中一个非常重要函数。 在处理字符串的时候经常用到。 find是string中一个查找函数。 find用法: 1.find() 示例:(上代码) #include<iostream> #include<string> using namespace std; int main() { s...

帅帅气气的黑猫警长 8万+

基于江协科技STM32创建HAL库工程模板

基于江协科技STM32入门教程创建的HAL库工程模板

2401_82728381的博客 1135

string类的常用函数(总结)

string类常用成员函数 (1)求长度 int length(); int size(); //求长度 (2)比较2个字符串 strcmp(s1,s2) == 0 直接用运算符 < > = = != <= >= (3)字符串复制 strcpy(s1,s2); s2->s1 可直接用运算符 = (4)字符串连接 strcat(s1,s2); s1 + s2 -> s1 直接用运算符 + 进行连接 (5)空串判断 bool empty(); //判断是

laity__c的博客 2万+

13、基于RBF的自适应鲁棒控制与反步控制方法及实现

本文介绍了基于RBF神经网络的自适应鲁棒控制与反步控制方法,详细阐述了控制系统的程序结构、核心算法及实现流程。通过Simulink搭建仿真系统,利用RBF网络逼近系统中的不确定非线性函数,并结合Lyapunov稳定性理论设计控制律,实现了对倒立摆等复杂非线性系统的高精度跟踪控制。文章还提供了完整的MATLAB/Simulink代码示例和仿真结果分析,验证了该方法的有效性与鲁棒性,为实际工程应用提供了可行的技术路径。

ol789012的博客 90

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

C++中string的find函数

参考:博客园 同勉共进 find函数的返回值是无符号整型,如果查找不到,就会返回4294967295(string::npos表示-1或4294967295) /*测试string中的find*/ #include&lt;iostream&gt; #include&lt;string&gt; using namespace std; int main() { //测试size...

小卜妞的博客 9532

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

C++string中的find()函数

C++ string中的find()函数 查找字符串s1中是否包含子串s2? 思路:此处需要用到string库中的find函数与npos参数。 (1)string::npos参数 string::npos参数: npos是一个常数,用来表示不存在的位置,npos定义的类型是: string::size_type。npos定义为:static const size_type npos=-1; ...

Sunflower的博客 5930

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

C++string中find_first_of()函数和find_last_of()函数

C++string中find_first_of()函数和find_last_of()函数

信小海 4万+

c++---find()函数

c++的find函数简介,示例

qq_43700779的博客 1万+

c++中string find函数的使用

http://www.cplusplus.com/reference/string/string/find/ string (1)从位置pos开始,找字符串str,返回匹配首字符的位置,没找到返回string::npos size_t find (const string&amp; str, size_t pos = 0) const noexcept; c-string (2)从位置...

写东西仪式感极强(其实拖延症晚期晚期)的大龄小白 2304

string类型数据的find函数

string类型数据的find函数: string.find ( string / char ) 。 ①、若在string中存在,则返回第一次出现的位置(下标)。 ②、若不存在,则返回 string::npos 。 1、一参数、参数为字符: #include&lt;iostream&gt; using namespace std; int main() { string s...

Curtis’Blog 1万+

C++string中find()和rfind()函数

C++string中find()和rfind()函数 1、find()函数 查字符或字符串,若查找成功,则返回正向查到的第一个字符下标或第一个字符串首字符的下标;若查找失败,无法返回正确的下标。find()函数的返回值为无符号整数类型。 2、 rfind()函数 逆向查字符或字符串,若查找成功,则返回逆向查到的第一个字符下标或第一个字符串首字符的下标;若查找失败,无法返回正确的下标。逆向查到的第一...

信小海 1万+

string的find函数返回值和string::npos

先看一种很多人日常使用错误方式 string str(“hello world”); int pos=str.find_first_of(“h”); if(pos!=string::npos) // 或者 if(pos!=-1) {… …// 查找到了 } //不存在是find返回-1 这样的使用,结果是正常的,但并没有很好的理解string find函数的返回类型和string::npos真正的值。 string::find这类型的函数,返回值类型都是string::size_type, 而string

ShenHang_的博客 2287
上一篇: UNIX系统FreeBSD常用命令
下一篇: wince与pc连接同步出错解决方法
ComputerInBook
博客等级 码龄19年 1168粉丝 464原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值