无法在 abs 函数 c++ 中使用字符串长度函数
Not able to use string length function in abs function c++
void f(const string& a,const string& b){
// works
int lena = a.length();
int lenb = b.length();
return abs(lena-lenb);
// does not work
return abs(a.length()-b.length());
}
我有点困惑,我无法abs()
函数中调用字符串length()
函数。当我将字符串length()
函数的结果放在整数数据类型中时,没有错误。
当我在abs()
中调用字符串length()
函数时,错误是这样的。
error: call of overloaded
abs(std::__cxx11::basic_string<char>::size_type) is ambiguous
abs(a.length()-b.length);
当你写:
a.length()-b.length()
结果最终具有类型std::size_t
,因为返回的std::string::length()
类型也是std::size_t
。
使用此类类型调用std::abs
时,编译器必须选择以下重载之一:
int abs(int n);
long abs(long n);
long long abs(long long n);
std::intmax_t abs(std::intmax_t n);
并且语言中没有将无符号整数提升/转换为特定有符号整数的规则,这意味着编译器无法为您选择。
但是,当您调用它时:
lena-lenb
它具有类型int
,因为它是两个int
s 的减法,因此选择以下重载:
int abs(int n);
相关文章:
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 如何从void函数输出字符串
- 使用用户定义函数的字符串反转
- 为什么我不能在不创建字符串变量的情况下使用函数的字符串输出
- C++ 使用 assign 函数的字符串与直接使用 '=' 更改值的字符串之间的区别
- 在c++构造函数中使用随机字符串生成器
- C++浮点数据类型和字符串数据类型无法子到模板函数中
- C++:如何使函数只返回作为列表一部分的字符串
- 如何在C++中的同一函数中使用字符串和双精度
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- 使用自定义比较函数使用std::sort()对矢量字符串进行排序时出现问题
- 一个函数,用于查找字符串1包含字符串2 c++的次数
- 对函数 PlaySound 使用字符串变量
- 具有多个模板的模板函数,用于特定数据类型(如字符串)?
- 字符串化递归的"std::vector<std::vector<...>>"而不使用部分模板函数专用化
- Visual c ++,使用字符串引用/指针调用 dll 函数
- 构造函数字符串参数未设置窗口标题
- C++默认构造函数:字符串参数与字符串参数()
- 使用函数C++字符串输入
- c++模板函数字符串类型不匹配