【问题标题】:How to know how many digits are in a numeral in C++ [duplicate]如何知道C ++中的数字中有多少位[重复]
【发布时间】:2021-05-22 23:53:51
【问题描述】:

我有一个要求输入数字的 C++ 代码。我想用这个数字的长度循环for,比如我们习惯在JavaScript中使用.length属性。

例如:

输入是:2563

int input;
for (i = 0; i < input.length; i++)

应该重复4次。

我该怎么做?

【问题讨论】:

标签: c++ loops for-loop


【解决方案1】:

如果您总是通过某些文本输入(命令行或文本文件)接收数字,则没有理由进行模运算。如果您的循环甚至与接收到的符号数量紧密耦合,那么对整数进行操作就更没有意义了。而是将输入作为字符串接收。

#include <iostream>
#include <string>

int main() {
    std::string input;
    std::cout << "Enter a positive integer: ";
    std::getline(std::cin, input);

    for (int i = 0; i < input.length(); i++) {
        std::cout << "Digit number " << i << " is " << input[i] << std::endl;
    }
}

注意 input[i] 是一个字符,对该字符的任何算术运算都不会像您期望的那样对整数的各个数字进行运算。如果您希望数字以数字方式(而不仅仅是符号)使用,您可以使用std::stoi 系列函数(“字符串到整数”)将其转换为整数。

#include <iostream>
#include <string>

int main() {
    std::string input;
    std::cout << "Enter a positive integer: ";
    std::getline(std::cin, input);

    for (int i = 0; i < input.length(); i++) {
        std::cout << "Digit number " << i << " is " << input[i] << std::endl;
    }

    int value = std::stoi(input);
    std::cout << "The number times 2 is " << value * 2 << std::endl;
}

注意std::stoi 系列函数提供错误检查功能。为简单起见,我上面的示例省略了这一点,因为这听起来像是一个学校作业,其中输入验证是用户的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-26
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-11
    • 2011-12-08
    • 2011-03-29
    相关资源
    最近更新 更多