2019独角兽企业重金招聘Python工程师标准>>>

#include <algorithm>
#include <iostream>
#include <cstring>

int main()
{

//一个基类型为const char*的数组, const char*类型本质上就是一些C风格的字符串常量。特别注意NULL是个特例。

char const* strings[] = {

"hello",
        "world",
        "computers",
        "are",
        "awesome",
        NULL  //这里是故意这样设置的,经过测试程序是支持对NULL元素的比较 的。要在比较函数中处理。

};

//可以在函数内部定义结构体。
    struct {
        bool operator()(char const* a, char const* b) const {
            //a&&b保证调用strcmp的前的正确性判断。
            //许多标准库中的函数都没有提供合法性检验。比如开方函数sqrt, 参数是有符号类型的,但是计算-1的结果却得不到正确的值.
            //当a,b都可以保证是非空时,对a,b进行字符串比较,strcmp(a,b)<0在sort函数中等价于对字符串进行字典升序排序。而a,b有一个为空时,按字符串表示的地址进行比较,因为有效地址总是大于NULL,所以a<b相当于,排序时将NULL放在开头。
            //当a<b时,strcmp返回值小于0
            return (a && b) ? 0 > strcmp(a, b) : a < b;  
        }
    } cmp;  //声明一个函数对象。

std::sort(std::begin(strings), std::end(strings), cmp);   //这里注意begin,end两个函数的用法。

//s可能取NULL所以需要对s的值进行判断,否则会报错。另外注意对于条件表达式最好在外面整体套上括号,特别是出现在cout语句中。否则可能出现意想不到的情况。比如这里如果不加括号,结合情况就变成了“NULL"<<"\n"的整体再与:结合,并报错“表达式必须具有整数或未区分范围的枚举类型”,应该是将<<当作移位运算符,但提示“NULL"和“\n”不能用于移位运算。

for (auto& s : strings)       //c++中的foreach语句
        std::cout << ((NULL!=s)?s:"NULL" )<< "\n";

std::cout <<(1? 2 << '\n':4) << std::endl;  //输出2048,即将2左移10位

//‘\n'的ascii码值0x0A,2*1024=2048).移位的位数必须是与整型兼容的类型,字符串类型是绝对不可以的。就向上面报错的那样。

return 0;
}

转载于:https://my.oschina.net/ray1421/blog/691314

strcmp函数使用中的一些细节问题相关推荐

  1. 详解字符串比较函数:strcmp函数及其模拟实现

    详解字符串比较函数:strcmp函数及其模拟实现!!! 对于字符串比较函数:strcmp函数,想必大家也不会感觉陌生,毕竟在之前就有过接触!虽然很少使用,但是,见面了也能认出来!只不过不太怎么使用过罢 ...

  2. C语言不用strcmp函数比较字符串大小

    C语言不用strcmp函数比较字符串大小 #include <stdio.h> int main(){int i, res;char s1[100], s2[100];printf(&qu ...

  3. strcmp函数和strcpy函数

    (一)strcmp函数 strcmp函数是比較两个字符串的大小,返回比較的结果.一般形式是: i=strcmp(字符串,字符串); 当中,字符串1.字符串2均可为字符串常量或变量:i   是用于存放比 ...

  4. 【C 语言】二级指针作为输入 ( 指针数组 | 指针数组排序 | 字符串排序 | strcmp 函数 )

    文章目录 一.strcmp 函数 二.指针数组排序 ( 字符串排序 ) 二.完整代码示例 一.strcmp 函数 strcmp 是 String Compare 缩写 , 该函数用于比较两个字符串 ; ...

  5. Uva 11732 strcmp()函数

    题目链接:https://vjudge.net/contest/158125#problem/A 题意: 系统中,strcmp函数是这样执行的,给定 n 个字符串,求两两比较时,strcmp函数要比较 ...

  6. strlen函数,strcat函数,strcpy函数,strncpy函数,strcmp函数

    strcpy函数: char *strcpy(char *Dest , const char *Src) { assert((Dest != NULL) && (Src != NULL ...

  7. 蓝桥杯-11-1实现strcmp函数(java)

    算法提高 11-1实现strcmp函数 时间限制:1.0s 内存限制:256.0MB问题描述自己实现一个比较字符串大小的函数,也即实现strcmp函数.函数:int myStrcmp(char *s1 ...

  8. OpenCV reshape函数需要注意的细节

    OpenCV reshape函数需要注意的细节 [尊重原创,转载请注明出处]https://blog.csdn.net/guyuealian/article/details/80252853 本人在使 ...

  9. C和指针之字符串简单实现strchr、strcmp函数

    1.问题 简单实现strchr.strcmp函数 2.代码实现 #include <stdio.h> #include <string.h>/** 简单模拟strchr函数 * ...

  10. 编写一个C程序,实现以下功能:用一个函数实现两个字符串的比较,即自己写一个strcmp函数,函数原型为:int strcmp(char *p1,char *p2);设p1指向字符串s

    题目描述: 编写一个C程序,实现以下功能: 用一个函数实现两个字符串的比较,即自己写一个strcmp函数,函数原型为: int strcmp(char *p1,char *p2); 设p1指向字符串s ...

最新文章

  1. eclipse中 properties文件编码问题
  2. delphi 窗体透明详解TransparentColorValue,窗体透明控件不透明
  3. 安装Termux的手机上运行Python
  4. 10 MM配置-主数据-定义物料类型
  5. brew 安装php56,homebrew安装php5.6后的信息
  6. 领导力十律_关于开放领导力的10个最受欢迎的故事
  7. c++ 二维数组_二维数组的声明2019_04_18
  8. mysql复杂条件判断_MySQL复杂where条件分析
  9. 95-850-020-源码-心跳-JobMaster与TaskExecutor之间的心跳检测
  10. 【Java基础】RTTI与反射之Java
  11. ajax上传文件时显示进度
  12. 扇贝编程python学习笔记-基础篇4
  13. Java程序员的魔法杖-Arthas 3.1.2版本发布了
  14. 经典布局(flex和传统两种实现)—左中右三栏式
  15. python 保存网页图片到本地
  16. 幻想乡三连C:狂飙突进的幻想乡
  17. 洛克人java下载_洛克人-威利博士末日
  18. Ubuntu 20.04系统中VSCode+CMake+GTest实现C++程序自动化单元测试的详细方法
  19. 解决方案|在线自习室
  20. 用C语言学习高中数学:前言&创建集合

热门文章

  1. python入门笔记第一天
  2. 个人工作总结05(第二阶段)
  3. 开发错误记录5-Failed to sync Gradle project ‘HideTitleDemo’
  4. 从远程库克隆(转载)
  5. 高聚合和低耦合的理解
  6. 编写安全代码:小心使用浮点数
  7. centOS 安装远程桌面
  8. Beta冲刺提交-星期五
  9. 《简约之美:软件设计之道》总结
  10. Hark的数据结构与算法练习之梳排序