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实际上在内部做什么?”-这真的很重要吗?这是一个实现细节。它可以使用它想要的任何技术将整数转换为字符串。重要的是它可以工作。我不知道,我正在尝试学习编程,所以如果我想为自己做一些方法或函数,我会尝试了解这些东西是如何工作的。我不知道是否不行他学习编程的方法正确与否