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

时间:2016-05-08 15:42:43

标签: c++

有没有办法得到int变量的长度,例如在字符串中我们通过简单地写int size = string.length();

获得长度
{{1}}

4 个答案:

答案 0 :(得分:0)

#include <cassert>
#include <cmath>
#include <iostream>

using namespace std;

int main () {
    assert(int(log10(9))   + 1 == 1);
    assert(int(log10(99))  + 1 == 2);
    assert(int(log10(123)) + 1 == 3);
    assert(int(log10(999)) + 1 == 3);
    return 0;}

答案 1 :(得分: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;
 }

或者:

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();
 }

答案 2 :(得分:0)

您可以在此处选择一些选项:

(这个答案假定你是指整数输入中可打印字符数)

  1. 将输入作为字符串读取并在转换为int之前获取其长度。请注意,此代码为简洁起见避免了错误处理。

    #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; }

  2. 读入一个整数并直接计算数字:

    许多其他答案使用日志来做到这一点。我将给出一个能够将减号正确计算为角色的颜色。

    int length_of_int(int number) {
        int length = 0;
        if (number < 0) {
            number = (-1) * number;
            ++length;
        }
        while (number) {
            number /= 10;
            length++;
        }
        return length;
    }

    源自granmirupa的回答。

答案 3 :(得分:0)

不确定它是否符合您的要求,但您可以使用std :: to_string将数值数据转换为字符串,然后返回其长度。