C++ 如何获取int变量的长度,因为字符串具有内置函数,例如string.length()

C++ 如何获取int变量的长度,因为字符串具有内置函数,例如string.length(),c++,C++,有没有办法得到int变量的长度,例如在string中,我们只需写int size=string.length()就可以得到长度 #包括 #包括 使用名称空间std; int main() { int i=0; 不能包含 #包括 #包括 使用名称空间std; int main(){ 断言(int(log10(9))+1==1); 断言(int(log10(99))+1==2); 断言(int(log10(123))+1==3); 断言(int(log10(999))+1==3); 返回0;} 对于

有没有办法得到int变量的长度,例如在string中,我们只需写int size=string.length()就可以得到长度

#包括
#包括
使用名称空间std;
int main()
{
int i=0;
不能包含
#包括
#包括
使用名称空间std;
int main(){
断言(int(log10(9))+1==1);
断言(int(log10(99))+1==2);
断言(int(log10(123))+1==3);
断言(int(log10(999))+1==3);
返回0;}

对于长度,我假设您指的是数字中的位数:

#include <math.h>  

.....
int num_of_digits(int number)
{  
   int digits;
   if(number < 0)
       number = (-1)*number;
   digits = ((int)log10 (number)) + 1;
   return digits;
 }
#包括
.....
整数位数(整数)
{  
整数位数;
如果(数字<0)
数字=(-1)*数字;
数字=((int)log10(number))+1;
返回数字;
}
或:

int num\u位(int number)
{
整数位数=0;
若(数<0)数=(-1)*数;
while(数字){
数目/=10;
数字++;
}
返回数字;
}
另一个选项可能是(也可以与float一起使用,但结果不能保证):

#包括
#包括
#包括

 int num_of_digits3(float number){
    stringstream ss;
    ss << setprecision (20) << number;
    return ss.str().length();
 }
int num\u的数字3(浮点数){
细流ss;

ss您在这里有几个选项:

(此答案假设您的意思是整数输入中可打印的字符数)

  • 将输入作为字符串读取,并在转换为int之前获取其长度。请注意,为了简洁起见,此代码避免了错误处理。
    #包括
    #包括
    使用命名空间std;
    int main(int argc,字符**argv){ 不能串;
    无法确定它是否符合您的要求,但您可以使用std::to_string将数字数据转换为字符串,然后返回其长度。

    整数没有长度。但是,该整数的十进制表示有长度。“int变量的长度”(内存大小)在环境中是固定的,我不认为有像您所认为的那样简单的方法来获得整数的位数。“是否有可能找到该大小”是的,您只需自己(通过您的程序)进行计数。请注意,对于十进制数,记录₁₀ 这个数字每增加10倍就增加1。这是一个相对常见的技巧。为自己编写一个函数。这对于负数来说是失败的(我认为是灾难性的)。
    #include <math.h>  
    
    .....
    int num_of_digits(int number)
    {  
       int digits;
       if(number < 0)
           number = (-1)*number;
       digits = ((int)log10 (number)) + 1;
       return digits;
     }
    
    int num_of_digits(int number)
    {
        int digits = 0;
        if (number < 0) number = (-1) * number; 
        while (number) {
            number /= 10;
            digits++;
        }
        return digits;
    }
    
     #include <iostream>
     #include <sstream>
     #include <iomanip>  
    
     int num_of_digits3(float number){
        stringstream ss;
        ss << setprecision (20) << number;
        return ss.str().length();
     }
    
    #include <iostream>
    #include <sstream>
    using namespace std;
    int main(int argc, char** argv) { cout << "Please enter the value of i" << endl; string stringIn = ""; cin >> stringIn; cout << "stringIn = " << stringIn << endl; size_t length = stringIn.length(); cout << "input length = " << length << endl; int intIn; istringstream(stringIn) >> intIn; cout << "integer = " << intIn << endl; }
    int length_of_int(int number) {
        int length = 0;
        if (number < 0) {
            number = (-1) * number;
            ++length;
        }
        while (number) {
            number /= 10;
            length++;
        }
        return length;
    }