C++ 如何获取C+;中int中特定位置的编号+;?

C++ 如何获取C+;中int中特定位置的编号+;?,c++,C++,所以我有一个向上计数的整数 假设我们已经达到65000人 我需要得到第千位(5)的数字,然后分配给另一个整数 我发现下面的代码片段非常简单,但不是我所需要的 您可以对任何数量的整数使用%运算符 分离例如,888 1%10将为您提供1,888 1%100将为您提供1 给你81 谢谢 试试这样的东西 int a =65432; int b = ((a%10000)-(a%1000))/1000; 此处(a%10000)=5432 和(a%1000)=432 所以(a%10000)-(a%1000)

所以我有一个向上计数的整数

假设我们已经达到65000人

我需要得到第千位(5)的数字,然后分配给另一个整数

我发现下面的代码片段非常简单,但不是我所需要的

您可以对任何数量的整数使用%运算符 分离例如,888 1%10将为您提供1,888 1%100将为您提供1 给你81


谢谢

试试这样的东西

int a =65432;
int b = ((a%10000)-(a%1000))/1000;
此处(a%10000)=5432
和(a%1000)=432
所以(a%10000)-(a%1000)将是5000
最后5000/1000=5

或者直接使用

int b = (a%10000)/1000;

试试这样的

int a =65432;
int b = ((a%10000)-(a%1000))/1000;
此处(a%10000)=5432
和(a%1000)=432
所以(a%10000)-(a%1000)将是5000
最后5000/1000=5

或者直接使用

int b = (a%10000)/1000;

@Matt在评论中建议:

int num1 = 65000;
int num2 = num%10000;  //num2 is 5000
num2 = num2/1000;

Output: 5

@Matt在评论中建议:

int num1 = 65000;
int num2 = num%10000;  //num2 is 5000
num2 = num2/1000;

Output: 5

你可能需要这个

int AtPos(int number, int pos)
{
    return ((number > 0 ? number : -number) / (int)pow(10, pos)) % 10;
}
如果这是您要查找的参数,则应添加参数有效性检查


编辑。

我刚刚注意到,您需要在指定的位置分配不同的号码。因此,您需要进行以下改进:

int& SetValueAtPos(int& number, int pos, int newValue)
{
    int power = (int)pow(10, pos);
    number -= AtPos(number, pos) * power;
    number += power * newValue;
    return number;
}


此外,您还可以合并这些函数并缓存pow(10,pos)的值。这样会更优化。

您可能需要这样做

int AtPos(int number, int pos)
{
    return ((number > 0 ? number : -number) / (int)pow(10, pos)) % 10;
}
如果这是您要查找的参数,则应添加参数有效性检查


编辑。

我刚刚注意到,您需要在指定的位置分配不同的号码。因此,您需要进行以下改进:

int& SetValueAtPos(int& number, int pos, int newValue)
{
    int power = (int)pow(10, pos);
    number -= AtPos(number, pos) * power;
    number += power * newValue;
    return number;
}


此外,您还可以合并这些函数并缓存
pow(10,pos)
的值,这样会更优化。

提示:如何使用
%
操作符来获取以
5
开头的内容?那么,您如何使用
/
运算符仅提取其中的第一位数字呢?没有接受的答案。您找到问题的答案了吗?提示:如何使用
%
运算符获取以
5
开头的内容?那么,您如何使用
/
运算符仅提取其中的第一位数字呢?没有接受的答案。你找到问题的答案了吗?