栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

abs的应用(c++)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

abs的应用(c++)

我们知道abs()在c++中是取绝对值操作。
今天我要分享的是我在做题时遇到的一种错误情况。

下面这段代码是我想求两个字符串长度之间的差值。

int Length(string first, string second) {
    int z = abs(first.length() - second.length());;
    return z;
}

上述这种写法在Visual Studio2021版中报错的。我们都知道abs()方法是支持重载的,但abs()只支持6种类型的重载,分别是int,double,float,long,long double,long long这六种类型。而string的length方法返回值是 size_type类型。size_type是在C++中常用来定义string和vector大小的。string的size方法返回值同样是 size_type类型。
下面是string类型的length方法和size方法的定义。我们可以清楚地看到返回值类型是size_type类型。

    _NODISCARD _CONSTEXPR20 size_type length() const noexcept {
        return _Mypair._Myval2._Mysize;
    }
    _NODISCARD _CONSTEXPR20 size_type size() const noexcept {
        return _Mypair._Myval2._Mysize;
    }

通过上述解释,我们知道了abs的重载类型和length的返回类型。在abs方法中没有重载size_type的类型,所以c++会报错。我们只需要对其强转即可。下面是解决方案代码:

int Length(string first, string second) {
    int z = abs(int (first.length() - second.length()));;
    return z;
}

通过上述方法即可求得两子串的差值。

感谢您的观看!麻烦喜欢给点个赞呗。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/879207.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号