c++中字符串string知识点

P1012 [NOIP1998 提高组] 拼数 - 洛谷 | 计算机科学教育新生态

在 C++ 中,如果你用 std::string 类型来存储数字并进行比较,系统比较的是这两个字符串的字典顺序(lexicographical order),而不是数值大小。这意味着比较是按字符逐个进行的,类似于字典中单词的排列方式。

比较规则:

  1. 字符逐个比较:从第一个字符开始逐个比较,如果第一个字符不同,就根据字符的 ASCII 值决定大小;如果相同,就继续比较下一个字符。

  2. 长度:如果两个字符串的前面部分完全相同,比较将继续到较短字符串的末尾。此时,较短的字符串被视为较小的字符串。

示例

#include <iostream>
#include <string>

int main() {
    std::string a = "12345";
    std::string b = "1234";

    if (a > b) {
        std::cout << "a is greater than b" << std::endl; // 输出
    } else {
        std::cout << "a is not greater than b" << std::endl;
    }

    return 0;
}

在这个例子中,尽管 ab 都表示数字,a 是 "12345",b 是 "1234"。在字符串比较中,"12345" 会被认为是大于 "1234"。

如果需要数值比较

如果你想按数值比较字符串中的数字,可以将它们转换为整数或浮点数,例如使用 std::stoistd::stoll 等函数。示例:

#include <iostream>
#include <string>

int main() {
    std::string a = "12345";
    std::string b = "1234";

    if (std::stoll(a) > std::stoll(b)) {
        std::cout << "a is greater than b" << std::endl; // 输出
    } else {
        std::cout << "a is not greater than b" << std::endl;
    }

    return 0;
}

在这个例子中,std::stoll 将字符串转换为长整型,从而可以进行数值比较。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值