C++ 如何知道整数的位数

C++ 如何知道整数的位数,c++,C++,我是编程新手,我想知道,我怎么知道用户输入的整数的位数?例如:用户输入一个数字,如123456,我怎么知道用户输入了6位数字?我不想使用for循环来获取用户输入,因为我不希望用户在空格或回车后输入每个数字 现在,我正在将一个数字转换成一个数字数组,这样我就可以控制它们,但问题是我不知道应该循环多少个数字,因为我不知道数字中有多少个数字 我是否可以将用户的输入作为字符串,然后使用string.length并将其转换为数字数组 #include <iostream> using nam

我是编程新手,我想知道,我怎么知道用户输入的整数的位数?例如:用户输入一个数字,如
123456
,我怎么知道用户输入了6位数字?我不想使用
for
循环来获取用户输入,因为我不希望用户在空格或回车后输入每个数字

现在,我正在将一个数字转换成一个数字数组,这样我就可以控制它们,但问题是我不知道应该循环多少个数字,因为我不知道数字中有多少个数字

我是否可以将用户的输入作为字符串,然后使用
string.length
并将其转换为数字数组

#include <iostream>

using namespace std;

int main()
{
    int N;
    cin >> N;
    while(N--)
    {
        int num;
        cin >> num;

        int arr[1000];
        for (int i=0 ;i<???;i++)
        {
            arr.[i]=num%10;
            num = num /10;
        }

    }
}
#包括
使用名称空间std;
int main()
{
int N;
cin>>N;
而(N--)
{
int-num;
cin>>num;
int arr[1000];
对于(int i=0;i
是一种常见的模式,与您已有的模式非常接近

尽管你可以按照你在问题中提到的和别人在评论中建议的那样做,并将输入作为字符串获取,然后使用
string.length

是一种常见的模式,与您已有的模式非常接近


尽管您可以按照问题中提到的和评论中有人建议的方式进行操作,将输入作为字符串并使用
string.length

一种更简单的方法是将其转换为字符串,然后计算所述字符串的长度

#include <iostream>
#include <string>

using namespace std;  
int main()  {  
    int n;
    cin >> n;

    string str = to_string(n);
    cout <<"the length of" <<str << "is:" <<str.length() <<"\n";  
}  
#包括
#包括
使用名称空间std;
int main(){
int n;
cin>>n;
string str=到_字符串(n);

cout更简单的方法是将其转换为字符串,然后计算所述字符串的长度

#include <iostream>
#include <string>

using namespace std;  
int main()  {  
    int n;
    cin >> n;

    string str = to_string(n);
    cout <<"the length of" <<str << "is:" <<str.length() <<"\n";  
}  
#包括
#包括
使用名称空间std;
int main(){
int n;
cin>>n;
string str=到_字符串(n);

cout是的,您可以将用户输入读取为
std::string
而不是
int
,然后可以使用
std::string::size()
(或
std::string::length()
)获取字符串中的字符数,例如:

#include <iostream>
#include <string>

int main()
{
    std::string S;
    std::cin >> S;

    int arr[1000] = {};
    for (size_t i = 0; i < S.size(); ++i)
    {
        arr[i] = (S[i] - '0');
    }

    return 0;
}
否则,如果你真的想读入一个
int
并直接循环它的数字,你可以使用类似的方法:

#include <iostream>

int main()
{
    unsigned int N;
    std::cin >> N;

    int arr[1000] = {};
    size_t i = 0;

    while (N != 0)
    {
        arr[i++] = num % 10;
        num /= 10;
    }

    return 0;
}
#包括
int main()
{
无符号整数N;
标准:cin>>N;
int-arr[1000]={};
尺寸i=0;
而(N!=0)
{
arr[i++]=num%10;
num/=10;
}
返回0;
}

是的,您可以将用户输入读取为
std::string
而不是
int
,然后可以使用
std::string::size()
(或
std::string::length()
)获取字符串中的字符数,例如:

#include <iostream>
#include <string>

int main()
{
    std::string S;
    std::cin >> S;

    int arr[1000] = {};
    for (size_t i = 0; i < S.size(); ++i)
    {
        arr[i] = (S[i] - '0');
    }

    return 0;
}
否则,如果你真的想读入一个
int
并直接循环它的数字,你可以使用类似的方法:

#include <iostream>

int main()
{
    unsigned int N;
    std::cin >> N;

    int arr[1000] = {};
    size_t i = 0;

    while (N != 0)
    {
        arr[i++] = num % 10;
        num /= 10;
    }

    return 0;
}
#包括
int main()
{
无符号整数N;
标准:cin>>N;
int-arr[1000]={};
尺寸i=0;
而(N!=0)
{
arr[i++]=num%10;
num/=10;
}
返回0;
}

Note:我不能把num中的元素数作为旁注:谢谢Andreas的这一说明:)只是一个元注释:你已经得到了解释如何做到这一点的答案。但是请记住,整数没有数字。它只有一个值。它的文本表示有数字。所以这里的问题可能是“如果我有一个整数值,如果我将其转换为文本,我将得到多少位数?"。另一方面,正如答案所指出的,如果输入是文本,则只需对字符进行计数。将这些字符转换为整数值不会对解决方案产生任何影响。注意:我不能将num中的元素数作为旁注:谢谢Andreas,请注意:)只是一个元注释:您已经收到answ解释如何操作的ER。但请记住,整数没有数字。它只有一个值。它的文本表示形式有数字。因此这里的问题可能是“如果我有一个整数值,如果我将其转换为文本,我将得到多少个数字?”。另一方面,正如答案所指出的,如果输入是文本,则只需计算字符数。将这些字符转换为整数值不会对解决方案产生任何影响。哦,是的,我忘记了
std::to_string()
谢谢您的回答,很抱歉,但是to_string实际上在内部做什么?在我开始学习编程时,您是否建议使用这些现成的方法???@logan_92“to_string实际上在内部做什么??”-这真的很重要吗?这是一个实现细节。它可以使用它想要的任何技术将整数转换为字符串。重要的是它可以工作。我不知道,我正在尝试学习编程,所以如果我想为自己做一些方法或函数,我会尝试了解这些东西是如何工作的。我不知道是否不行他学习编程的方法是否正确。@logan_92我推荐这种方法。学习并使用所有可用的工具。然后当你实际需要实现一些不可用的工具时,你可以看看这些工具(你知道如何使用)是如何实现的在引擎盖下工作,然后调整。哦,是的,我忘记了
std::to_string()
谢谢你的回答,很抱歉,但是to_string实际上在内部做什么?你建议在我开始学习编程时使用这些现成的方法吗?@logan_92“to_string实际上在内部做什么?”-这真的很重要吗?这是一个实现细节。它可以使用它想要的任何技术将整数转换为字符串。重要的是它可以工作。我不知道,我正在尝试学习编程,所以如果我想为自己做一些方法或函数,我会尝试了解这些东西是如何工作的。我不知道是否不行他学习编程的方法正确与否