获取数字的数字有什么更好的选择吗?(C++)

Ale*_*lex 5 c++

我知道你可以使用模数和除法得到数字的数字.以下是我过去的做法:( Psuedocode以便让学生阅读本文为他们的家庭作业做一些工作):

int pointer getDigits(int number) 
    initialize int pointer to array of some size
    initialize int i to zero
    while number is greater than zero
       store result of number mod 10 in array at index i
       divide number by 10 and store result in number
       increment i
    return int pointer
Run Code Online (Sandbox Code Playgroud)

无论如何,我想知道是否有更好,更有效的方法来完成这项任务?如果没有,是否有任何替代方法可以完成此任务,避免使用字符串?C风格还是其他?

谢谢.我问,因为我想要在我的个人项目中做这件事,我想尽可能高效地做到这一点.

非常感谢任何帮助和/或见解.

Jam*_*lis 3

与动态分配数组所需的时间相比,提取数字所需的时间将相形见绌。考虑在结构中返回结果:

struct extracted_digits
{
    int number_of_digits;
    char digits[12];
};
Run Code Online (Sandbox Code Playgroud)

您需要为最大位数选择一个合适的值(12此处对于 32 位整数来说就足够了)。或者,您可以返回 astd::array<char, 12>并使用无效值对终端进行编码(因此,在最后一个值之后,存储 a10或其他非数字的内容)。

根据是否要处理负值,您还必须决定如何报告一元减号 ( -)。