请问C++中两个字符串的大小是怎样比较的?

 我来答
幻想家爱休闲
高能答主

2019-06-01 · 分享休闲中的点点滴滴!
幻想家爱休闲
采纳数:1083 获赞数:266314

向TA提问 私信TA
展开全部

C++中两个字符串的大小比较方法如下:

1、首先,定义一个整型变量j,保存判断的结果。

2、接着,定义两个字符串变量,保存判断的字符串。

3、输入两个字符串,保存在变量s1和s2中。

4、比较字符串s1和s2的大小,保存在变量j中。

5、根据判断结果j的值,输出两个字符串的比较结果。

6、用compare函数比较两个字符串,当s1大于s2时返回值大于0,当s1等于s2时返回值等于0,当s1小于s2时返回值小于0。

wjshan0808
推荐于2018-02-27 · TA获得超过601个赞
知道小有建树答主
回答量:696
采纳率:74%
帮助的人:359万
展开全部

会先比较长度,如果长度大那自然就大,

如果长度相等,会去从左到右逐个比较ascii码的大小,

如果相等则比较下一个,直到有结果。

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fuleiis
2018-10-31
知道答主
回答量:3
采纳率:0%
帮助的人:2199
展开全部

如果是std::string的话,可以直接用关系符号,例如小于号(<),比较。

如果是传统的C字符串(const char[])的话,和C语言一样,调用strcmp比较,小于返回负数,大于返回正数,等于返回0。

例如

#include <cstring>
#include <iostream>
#include <string>

int main()

{
    std::string s = "abc";
    std::string t = "def";

    const char u[] = "ghi";
    const char v[] = "jkl";


    std::cout << s << (s < t ? "<" : ">=") << t << std::endl;
    std::cout << u << (std::strcmp(u, v) ? "<" : ">=") << v << std::endl;

    return 0;
}

输出是

abc<def
ghi<jkl

注意无论用哪种方法,顺序规则都是字典规则(lexicographical order)。也就是:

  1. 从前往后,逐位比较,第一个不同的字符,按照char的顺序比较(例如字母a小于字母b)

  2. 如果第一个字符串是第二个字符串的子列,例如“abc”和“abcde”,则前者小于后者

  3. 空字符串小于其它所有字符串

  4. 当且仅当字符串长度和每个位置上字符都相同,字符串相等

字典规则示例:

以下程序给字符串排序{ 01, 1, 0, 0000, 10, 100 } 从小到大排序

#include <algorithm>
#include <iostream>
#include <string>
#include <vector>

int main()

{
    std::vector<std::string> vec { "01", "1", "0", "0000", "10", "100"};
    std::sort(vec.begin(), vec.end());
    for (auto elem : vec)
        std::cout << elem << " ";

    return 0;
}

输出是

0 0000 01 1 10 100

注意按照字典规则,0000排在1前面,那个说先看字符串长度的答案纯属误人子弟。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
叶小生大人
2016-01-09 · TA获得超过175个赞
知道小有建树答主
回答量:212
采纳率:0%
帮助的人:99.8万
展开全部
strcmp(str1,str2);
如果str1比str2大,则上表达式>0,等则=0,小则<0。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2016-01-09
展开全部
不是strcmp吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式