首页
学习
活动
专区
圈层
工具
发布

【C++】STL 算法 ⑦ ( 二元谓词使用场景 - 大小写不敏感 set 集合 | tolower 函数 - 将字符转为小写字母 | 基于 tolower 实现大小写不敏感的比较函数对象 )

; 实现的方法 : 自定义字符串 对比排序规则 , 先 将 字符串 都转为小写字母 , 然后进行对比 ; 2、tolower 函数 - 将字符转为小写字母 tolower 函数是 C / C++ 标准库...中的函数 , 其作用是 将 字符从 大写形式 转换为 小写形式 , 该函数定义在 C++ 头文件 的 中 或 C 语言头文件的 中 ; 如果传入的 字符 是 大写字母...int 类型 ; 传入的值需要 在 [ CHAR_MIN , CHAR_MAX ] 区间 中 , 或者 是 EOF ( -1 ) 值 ; 返回值解析 : 如果 参数 c 是 大写字母 , 则返回对应的小写字母...类型的参数转换为 unsigned char , 然后 再传递给 tolower 函数 ; 运行该程序的平台可能是 Windows / Linux , Arm / 单片机 平台 , 如果 char 在指定的平台上...mySet.insert("b"); mySet.insert("a"); mySet.insert("c"); 集合中的元素是 a b c 在集合中查找 字符串 " A " , 找不到该元素 ;

51410

字符串和内存函数(1)

函数介绍 2.1 strlen size_t strlen(const char* str); 字符串以 ‘\0’ 作为结束标志,strlen函数返回的是在字符串中 ‘\0’ 前面出现的字符个数(...(注:strtok函数会改变被操作的字符串,所以在使用strtok函数切分的字符串一般都是临时拷贝的内容并且可修改。)...strtok函数的第一个参数不为 NULL ,函数将找到str中第一个标记,strtok函数将保存它在字符串中的位置。...库函数在执行的时候,发生了错误,会将一个错误码存放在errno这个变量中,errno是C语言提供的一个全局变量 #include #include int main...("%c\n", tolower('A'));//a printf("%c\n", tolower('s'));//s return 0; } 最后,我们来看一道题目: //将字符串中的内容全部改成小写

25910
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C++字符串自制常用工具函数(格式化组装、各类型转字符串、拆分数组、替换子串、去除字符、大小写转换)

    字符串格式化组装通用函数 C++对字符串组装没有一个很直接好用的函数,这里利用C的snprintf()函数,提供一个可用的函数: template函数 split是其他语言中将字符串转化为数组的常用函数,C++中却没有,这里提供一个通用函数,可以将字符串根据特定字符拆分成数组: #include ...find函数会返回第一次找到的位置,如果找不到,会返回string::npos,这里的npos一般是一个size_t的最大值,在字符串中就是字符串的最后位置。...所以下面如果是string::npos,那就表示在begin位置后找不到了,直接从begin开始截取子串直到字符串的最后位置,放到数组中去。...这里改的是原字符串,不需要返回新字符串。 toupper/tolower函数源码本身只会对属于字母的字符进行修改,非字母字符会原样返回,所以不需要担心字符串中包含非字母的字符。

    2.7K10

    C语言:字符函数和字符串函数

    (注: strtok函数会改变被操作的字符串,所以在使⽤strtok函数切分的字符串⼀般都是临时拷⻉的内容 并且可修改。)...strtok函数的第⼀个参数不为 NULL ,函数将找到p中第⼀个标记,strtok函数将保存它在字符串 中的位置。...在不同的系统和C语⾔标准库的实现中都规定了⼀些错误码,⼀般是放在 errno.h 这个头⽂件中说明 的,C语⾔程序启动的时候就会使⽤⼀个全⾯的变量errno来记录程序的当前错误码,只不过程序启动 的时候...errno是0,表⽰没有错误,当我们在使⽤标准库中的函数的时候发⽣了某种错误,就会讲对应 的错误码,存放在errno中,⽽⼀个错误码的数字是整数很难理解是什么意思,所以每⼀个错误码都是 有对应的错误信息的...= '\0') { //赋值给s1和s2去匹配,这样的话s1找不到的话sz赋值回来继续找s2也一样 s1 = sz; s2 = p; while (*s1 == *s2) {

    35510

    【落羽的落羽 C语言篇】一些常见的字符函数、字符串函数、内存函数

    字符转换函数 在ctype.h头文件中,还有两个函数tolower、toupper,用于转换字符。...8. strstr的使用和模拟实现 使用 strstr能够找到str2在str1中第一次出现的位置,字符串的比较匹配不包含\0字符,以\0字符作为结束标志。...如果能够在str1中找到str2,就返回str2第一次出现的位置(地址);如果找不到,就返回空指针NULL。...的使用 strchr很简单,它能找到一个字符在一个字符串中第一次出现的位置并返回,如果找不到就返回空指针NULL。...程序启动时errno是0,表示没有错误。每一个错误码都对应一种运行错误,当我们在使用标准库中的函数时发生了某种错误,就会将对应的错误码数储存在中errno中。

    15210

    分享一些在C++中使用异常处理的最佳实践

    在C++中使用异常处理时,遵循最佳实践可以提高代码的健壮性、可读性和可维护性。以下是一些关键的最佳实践:1....只在真正"异常"的情况下使用异常异常应该用于处理意外错误(如文件不存在、网络连接失败),而不是用于常规控制流。...{ // 简单操作,不会抛出异常}// 可能抛出异常的函数(默认情况)void parseInput(const std::string& input) { if (input.empty...避免在析构函数中抛出异常析构函数抛出异常可能导致程序终止或未定义行为:// 不推荐~Resource() { if (close() !...异常与错误码的选择当错误需要被上层处理时,使用异常当错误可以在本地处理,且是预期的常见情况时,考虑使用错误码10.

    14210

    C++函数指针和std::function对象

    C++函数指针和std::function对象 这篇博文中通过实现对String字符串大小写转换为列来说明C++中函数指针和std::function对象的使用。...我们在博文《C++实现一个简单的String类》中的自定义的String类为基础,再添加两个成员函数用于将字符串全部转为大写(toUpperCase)和全部转为小写(toLowerCase)。...注意我们定义的transform函数指针的返回值是int,函数参数也是int,这是因为cctype头文件中的std::toupper和std::tolower函数的签名也是这样的。...我做了测试:如果用int的话,会跟locale中定义的toupper和tolower函数定义冲突。locale头文件中的这两个函数的返回值和参数是char_type类型,编译不通过。...中的std::toupper和std::tolower函数的返回值和参数类型由int强制转换为char即可。)

    3K30

    C++一分钟之-RAII资源获取即初始化

    在C++编程的世界里,资源管理是一项至关重要的任务,不当的资源处理往往会导致内存泄漏、文件句柄泄露等问题,进而影响程序的稳定性和性能。...当一个对象被创建时,它会自动获取所需的资源;当对象的生命期结束,比如离开作用域时,这些资源会被自动释放。这种机制依赖于C++的构造函数和析构函数,确保了即使遇到异常情况也能正确释放资源。...RAII的优势自动性:无需显式调用释放资源的代码,减少人为错误。异常安全:即使函数中抛出异常,局部对象的析构函数也会被调用,确保资源被正确释放。...自定义类实现RAII:对于非内存资源(如文件句柄、网络连接等),可以通过自定义类,在构造函数中获取资源,在析构函数中释放资源。...; return 0;}总结RAII是C++编程中不可或缺的资源管理策略,它通过对象生命周期自动管理资源,提高了代码的健壮性和可维护性。

    54310

    【C++掌中宝】深入理解函数重载:概念、规则与应用

    引言 函数重载是 C++ 中一项强大的特性,它允许程序员在同一作用域内定义多个同名函数,通过不同的参数类型或数量来区分这些函数。...什么是函数重载? 在 C++ 中,函数重载是指允许在同一作用域中定义多个具有相同名字但参数列表不同的函数。参数列表可以在参数类型、参数数量、或参数顺序上有所区别,而函数返回类型则不会影响函数的重载。...编译器如何解析重载函数的调用? 编译器实现调用重载函数解析机制的时候,肯定是首先找出同名的一些候选函数,然后从候选函数中找出最符合的,如果找不到就报错。...筛选可用函数:根据参数类型和数量,筛选出所有参数能够匹配的函数。 确定最佳匹配:根据函数匹配规则,选出优先级最高的匹配函数。 如果存在多个相同优先级的匹配,编译器会报出“模凌两可”错误。...总结 函数重载是 C++ 提供的一项非常实用的特性,它允许我们在同一作用域中定义多个同名函数,从而根据不同类型和数量的参数来实现多态性。

    81110

    杨校老师课堂之字符串——string相关函数方法(二)

    一、知识重点 C++ string 类的常用函数及相关工具的详细总结,按功能分类整理,附代码示例:(一)字符串基础操作函数功能描述示例代码s.length()返回字符串长度(字符数)string s =...tolower(c)将字符 c 转为小写(需包含 )char c = tolower('A'); // 'a'toupper(c)将字符 c 转为大写char c = toupper('...,不包含字符串末尾的 '\0'(C++ 的 string 会自动管理 '\0')。...需要支持以下操作:• 1 str:后接插入,在文档后面插入字符串 str,并输出文档的字符串。• 2 a b:截取文档部分,只保留文档中从第 a 个字符起 b 个字符,并输出文档的字符串。...• 3 a str:插入片段,在文档中第 a 个字符前面插入字符串 str,并输出文档的字符串。• 4 str:查找子串,查找字符串 str 在文档中最先的位置并输出;如果找不到输出 -1。

    31020

    C++大小写转换和性能

    参考链接: C++ towlower() 大小写转换和性能  前言  本文主要讨论最基本的一些大小写转换函数和API,不讨论一些常见的字符串程序库里面的大小写转换接口,另外本文的落脚点是这些转换函数的性能和日常开发中遇到的一些问题...#define _tolower(_Char)    ( (_Char)-'A'+'a' )  #define _toupper(_Char)    ( (_Char)-'a'+'A' )  C库(MS...另外要注意的是提供的towlower和towupper这两个函数效率出奇的低,为什么效率低没有去深究,反正tolower和toupper的参数是int,也可以用于宽字符版本,不知道为什么还提供towlower...,微软在字符串处理函数里面,使用了很多类似的小技巧(crtdefs.h)。  ...在合适的场景下,使用自定义的大小写转换是完全足够,研究这个花了大约半天时间,问题源于一个URL处理函数的性能问题,经过统计发现,这个函数的大量计算消耗在了URL转小写上面,经过改造之后,性能轻松提升60%

    1.9K40

    深入理解 C++ 异常机制

    前言 在 C++ 编程中,异常处理是一种强大的机制,能够帮助程序在运行时优雅地处理错误,避免崩溃,提高程序的健壮性和可维护性。...相比 C 语言通过错误码进行错误处理的方式,C++ 的异常处理提供了更清晰、更结构化的错误处理方法。...异常的概念 在 C++ 中,异常(Exception)是一种特殊的事件,当程序运行过程中发生错误时,程序可以抛出异常,并由相应的异常处理代码进行处理。...C 语言与 C++ 异常的区别 在 C 语言中,通常使用 错误码 进行错误处理: 需要手动检查函数的返回值,以判断是否出现错误。 错误码需要进行分类编号,程序需要额外的错误查询机制,处理逻辑复杂。...解决方案 RAII(资源获取即初始化) 资源在构造函数中分配,在析构函数中释放,确保异常安全。

    20310

    由浅入深C字符函数

    在c语言字符串库中提供了两个字符串转换函数: 1. int tolower ( int c ); //将参数传进去的⼤写字⺟转⼩写 2. int toupper ( int c ); //...does not match has a greater value in ptr1 than in ptr2 第一个不匹配的字符在 ptr1 中的值大于在 ptr2 中的值 2.strcmp...does not match has a greater value in str1 than in str2 第一个不匹配的字符在 str1 中的值大于在 str2 中的值 2.strncmp...返回类型:char* 2.函数功能:         解释 errnum 的值,生成一个包含描述错误条件的消息的字符串,该错误条是由 中 errno所控制的。...//errno.h中定义了一个全局变量errno 默认值为0 //在使用函数发生某种错误时,就会将对应的错误码放在errno中,需要通过strerror进行获取这个错误码 //把错误码对应的错误信息的字符串地址返回

    12810

    【C】字符函数和字符串函数(下)

    继【C】字符函数和字符串函数(上),这章主要来介绍以下库函数 字符串查找 strstr strtok 错误信息报告 strerror 字符操作 1、 strstr strstr在一个字符串中另外一个字符串是否存在..., 若存在:返回字符串的第一个出现的字符串的首地址 若不存在:返回NULL 示例: #include //strstr在一个字符串中另外一个字符串是否存在, //若存在:返回字符串的第一个出现的字符串的首地址...(注:strtok函数会改变被操作的字符串,所以在使用strtok函数切分的字符串一般都是临时拷贝的内容并且可修改。)...strtok函数的第一个参数不为NULL,函数将找到str中第一个标记,strtok函数将保存它在字符串中的位置。...返回错误码,所对应的错误信息。

    34940

    C语言——J字符函数 和 字符串函数

    * str ); • 字符串以 '\0' 作为结束标志,strlen函数返回的是在字符串中 '\0' 前⾯出现的字符个数(不包 含 '\0' ); • 参数指向的字符串必须要以 '\0' 结束; •...str2); 用途:函数返回字符串str2在字符串str1中第⼀次出现的位置; 说明:字符串的⽐较匹配不包含 \0 字符,以 \0 作为结束标志。...)函数的使用 char * strerror ( int errnum ); strerror 函数可以把参数部分错误码对应的错误信息的字符串地址返回来。...说明:在不同的系统和C语⾔标准库的实现中都规定了⼀些错误码,⼀般是放在 errno.h 这个头⽂件中说明的,C语⾔程序启动的时候就会使⽤⼀个全局的变量 errno 来记录程序的当前错误码,只不过程序启动的时候...errno 是0,表示没有错误,当我们在使⽤标准库中的函数的时候发⽣了某种错误,就会将对应的错误码,存放在 errno 中,⽽⼀个错误码的数字是整数很难理解是什么意思,所以每⼀个错误码都是有对应的错误信息的

    29210

    C语言和C++中的字符串(string)

    三、C++ string类相关操作     对于C++的string类来说,库函数定义了一系列的成员函数供我们使用,使用C++的string类来构建字符串,应包含头文件:     #include...如果没找到就返回string::npos,查找在字符串中第一个与ch匹配的字符,返回它的位置。...搜索从index开始   find_first_not_of()函数:    在字符串中查找第一个与str中的字符都不匹配的字符,返回它的位置。搜索从index开始。...如果没找到就返回string::nops   find_last_not_of()函数:    在字符串中查找最后一个与str中的字符都不匹配的字符,返回它的位置。搜索从index开始。...如果没找到就返回string::nops在字符串中查找最后一个与str中的字符都不匹配的字符,返回它的位置。

    3.6K10

    C语言从入门到实战——常用字符函数和字符串函数的了解和模拟实现

    ; toupper():将一个字符转换为大写字母; tolower():将一个字符转换为小写字母; strchr():在一个字符串中查找指定字符的位置; strstr():在一个字符串中查找指定字符串的位置...; strchr():在一个字符串中查找指定字符的位置; strstr():在一个字符串中查找指定字符串的位置; strtok():将一个字符串分割为多个子字符串。...(函数返回字符串str2在字符串str1中第一次出现的位置)。...在不同的系统和C语言标准库的实现中都规定了一些错误码,一般是放在 errno.h 这个头文件中说明的,C语言程序启动的时候就会使用一个全面的变量errno来记录程序的当前错误码,只不过程序启动的时候errno...是0,表示没有错误,当我们在使用标准库中的函数的时候发生了某种错误,就会讲对应的错误码,存放在errno中,而一个错误码的数字是整数很难理解是什么意思,所以每一个错误码都是有对应的错误信息的。

    42210
    领券