gpt4 book ai didi

c++ - 你怎么知道long long的长度

转载 作者:搜寻专家 更新时间:2023-10-31 00:27:26 27 4
gpt4 key购买 nike

我想知道如何获取long long 的长度。我有一个简单的函数,我试图获取 long long 的长度,但我也遇到了错误。

while (numberArray[i].length() > MAX_INPUT)
{
cout << "ERROR: Program can only take in a number length " << MAX_INPUT << " or less. Try again ->";

cin >> numberArray[i];
}

注意:numberArray 是一个由 int 组成的静态变量。对 .length() 的调用工作得很好,但我想将类型更改为 long long 而现在 .length() 似乎没有工作了。

这是我每次尝试运行代码时从编译器得到的消息类型:

In function 'void takeNumbers(std::__cxx11::string&, long long int (&)[11], int)':
main.cpp:48:26: error: request for member 'length' in 'numberArray[i]', which is of non-class type 'long long int'
while (numberArray[i].length() > MAX_INPUT){

最佳答案

在 C++ 中,普通的旧数据类型,如 long long int 没有用于获取其长度的成员函数。如果你想要一个整数的长度,你可以将数字转换成一个字符串,然后取它的长度。例如:

while (std::to_string(numberArray[i]).length() > MAX_INPUT)

这利用了 std::to_string用于将非字符串 POD 类型转换为 std::string 类的函数。

但假设您还需要处理负整数。以上不起作用,因为前导减号将被计为长度的一部分(除非你想要)。另一种方法是使用循环和除法来查找整数的长度并将此循环放在函数中,如下所示:

std::size_t numDigits(long long int n)
{
std::size_t length = 0;

do
{
++length;
n /= 10;
} while (n);

return length;
}

然后在你的循环中:

while (numDigits(numberArray[i]) > MAX_INPUT)

根据您的目标,您可以选择任何一种方法。

关于c++ - 你怎么知道long long的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49031074/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com