首页 > 编程语言 >C++标准库std::string的find_first_not_of 方法介绍:

C++标准库std::string的find_first_not_of 方法介绍:

时间:2023-12-21 16:59:26浏览次数:25  
标签:std string fmt C++ stra find first

C++标准库 std::string  的  find_first_not_of 方法介绍:

 

例如:

stra.find_first_not_of(s_fmt_a)
在字符串  stra 中找到第一个 不在 s_fmt_a 字符串中出现过的字符。
stra = "abc", abc 字符 都在 s_fmt_a 字符串里面出现过,所以第一个不在s_fmt_a里的字符是找不到的,
返回的结果是 std::string::npos;

这里有点绕:

再举例:

strf 是 "abcde-c-d"。
在strf 中找第一个不在 s_fmt_a 字符串里面出现过的字符,我们找到了"-",
"-"字符串 不在 s_fmt_a 字符串的范围里面,而且是第一个出现,所以返回了它的下标位置5.

 

std::string::find_first_not_of 是 C++ 标准库中的一个成员函数,

用于在字符串中查找第一个不包含在指定字符集中的字符的位置。


比如:strg.find_first_not_of(s_fmt_a)

  就是找 strg 字符串中,第一个不包含在 s_fmt_a 字符集里面的字符。这个字符是"_",位置是3.

 

 

#include <iostream>
#include <string>

int main(){
    std::string  stra = "abc";
    std::string  strb = "1234";
    std::string  strc = "123abc";
    std::string  strd = "ABCdef123";
    std::string  stre = "aabbcc.0.0";
    std::string  strf = "abcde-c-d";
    std::string  strg = "abc_d_e_f..1233";
    std::string  strh = "#abc_D_-E_f..1233";

    std::string s_fmt_a = "abcdefghijklmnopqrstuvwxyz.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    std::string s_fmt_b = "_";
    std::string s_fmt_c = "-";
    std::string s_fmt_d = "1234567890";
    std::string s_fmt_e = ".";

    size_t f1 = stra.find_first_not_of(s_fmt_a);
    if(f1 == std::string::npos){
        std::cout <<"stra NOT find"<< std::endl;
    }
    else {
        std::cout << "stra find at:" << f1 <<std::endl;
    }

    size_t f2 = strd.find_first_not_of(s_fmt_a);
    if(f2 == std::string::npos){
        std::cout <<"strd NOT find"<< std::endl;
    }
    else {
        std::cout << "strd find at:" << f2 <<std::endl;
    }

    size_t f3 = stre.find_first_not_of(s_fmt_a);
    if(f3 == std::string::npos){
        std::cout <<"stre NOT find"<< std::endl;
    }
    else {
        std::cout << "stre find at:" << f3 <<std::endl;
    }

    size_t f4 = strf.find_first_not_of(s_fmt_a);
    if(f4 == std::string::npos){
        std::cout <<"strf NOT find"<< std::endl;
    }
    else {
        std::cout << "strf find at:" << f4 <<std::endl;
    }

    size_t f5 = strg.find_first_not_of(s_fmt_a);
    if(f5 == std::string::npos){
        std::cout <<"strg NOT find"<< std::endl;
    }
    else {
        std::cout << "strg find at:" << f5 <<std::endl;
    }

    size_t f6 = strh.find_first_not_of(s_fmt_a);
    if(f6 == std::string::npos){
        std::cout <<"strh NOT find"<< std::endl;
    }
    else {
        std::cout << "strh find at:" << f6 <<std::endl;
    }return 0;
}

// g++ helloa.cpp --std=c++11 -o a1.bin

 

stra NOT find
strd NOT find
stre NOT find
strf find at:5
strg find at:3
strh find at:0

 

标签:std,string,fmt,C++,stra,find,first
From: https://www.cnblogs.com/music-liang/p/17919408.html

相关文章

  • C++ Qt开发:StringListModel字符串列表映射组件
    Qt是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍QStringListModel字符串映射组件的常用方法及灵活运用。QStringListModel是Qt中用于处理字符......
  • 交个崔鹏题 6-A /c++
    #include<iostream>#defineMAX10#include<malloc.h>#include<string.h>#include<stdlib.h>usingnamespacestd;typedefcharE;typedefstructEdge{ Estart; Eend; intweight;}*Edges;typedefstructGraphMatrix{ intvex,edge......
  • C/C++语法基础目录
    目录C/C++语法基础目录前言程序语言简介三大控制结构批量数据存储模块化编程指针自定义数据类型文件面向对象封装继承多态C/C++语法基础目录前言使用过较多的教学书籍,有很多不错的书籍,但是并不是那么切合自身的教学习惯,于是此书被拉开了帷幕。本书的第一次落键是在2023年12月2......
  • 人们一般提到的安全性只涉及内存安全——但这还远远不够……而且与其他语言(包括 C++
    C++之父BjarneStroustrup:我会为全球数十亿行C++代码带来一个崭新的解决方案https://mp.weixin.qq.com/s/L8xYyR88KdHsHqyz_sQ5Sg作者|DavidCassel译者|王强策划|Tina在CppConC++会议上,这位C++的创建人明确了该编程语言中迫切需要的安全措施具体都有哪些。  ......
  • 浅谈C++类型转换函数
    reinterpret_castreinterpret_cast<newtype>(expression)将一个类型的指针转换为另一个类型的指针,它允许从一个指针转换为整数类型。voidtest01(){ chara=0; int*p=reinterpret_cast<int*>(&a); //不安全}const_cast常量const指针与普通指针之间的相互转化。如果不用......
  • .net C# System.Text.Json 如何将 string类型的“true”转换为布尔值 解决方案
    直接上解决方法的代码先定义一个转换顺,代码如下:publicsealedclassAnhBoolConverter:JsonConverter<bool?>{publicoverridebool?Read(refUtf8JsonReaderreader,TypetypeToConvert,JsonSerializerOptionsoptions){varval......
  • openGauss学习笔记-166 openGauss 数据库运维-备份与恢复-导入数据-使用COPY FROM STD
    openGauss学习笔记-166openGauss数据库运维-备份与恢复-导入数据-使用COPYFROMSTDIN导入数据-从MY向openGauss数据库进行数据迁移166.1示例2:从MY向openGauss数据库进行数据迁移下面示例演示如何通过CopyManager从MY向openGauss数据库进行数据迁移的过程。importjava.io.St......
  • Mysql以及TCP socket的C++代码
    在使用socket编写tcp的C++程序时,遇到了一个问题:那就bind冲突了,分析原因:是因为std中有bind函数,而socket中也有,但是没有报重复定义的错误,这就有一点难办了。百度了一下:发现只要使用::bind就可以调用socket的bind。下面把这个套接字socket的server端代码贴出来:staticvoid*serv......
  • C++系列三:QT代码库
    目录前言QT小记1.菜单栏、工具栏、状态栏2.自定义的对话框3.任务管理器4.链接数据库mysql,sqlite5.WidgetsGalleryExample代码学习:999.ControlsQT-For-Python1.DemoQT-Quick1.HelloWorld2.简单表单前言记录有关qt的案例。QT小记知识点:1.ui_widget.h:类的名称是Ui......
  • el-upload组件报TypeError: Cannot create property ‘uid‘ on string错误解决方法
      今天发现使用el-upload上传文件,上传没有问题,点详情看文件时就会报一个错误,错误如下:TypeError:Cannotcreateproperty‘uid’onstring‘https://xxxx.com/upload/20230506/1683346602758.png’ 上传多张图片传值是['/service/soilTesting',/service/soilTest......