gpt4 book ai didi

c++ - 在 rccp int 中保留前导零

转载 作者:行者123 更新时间:2023-12-01 16:31:55 25 4
gpt4 key购买 nike

我有一个通过 Rcpp 的函数来反转整数

#include <Rcpp.h>
using namespace Rcpp;

//' Reverse an integer
//'
//' @param x A single integer.
//' @export
// [[Rcpp::export]]
int reverse_integer(int x) {
int reverse = 0;
while(x != 0){
int remainder = x%10;
reverse = reverse*10 + remainder;
x/=10;
}
return reverse;
}

这对于没有前导零或尾随零的数字来说效果很好

reverse_integer(123) == 321

但是,当有零时,它们将被删除,即

reverse_integer(100) == 1

如何最好地修改此函数,以便我仍然可以将其作为整数进行操作,但不会丢失零?

最佳答案

您需要返回一个字符串。在任何编程语言中,001 与 1 都不是不同的整数。方法如下:

#include <Rcpp.h>
using namespace Rcpp;

//' Reverse an integer
//'
//' @param x A single integer.
//' @export
// [[Rcpp::export]]
std::string reverse_integer(int x) {
int reverse = 0;
int ndigits = 0;
while(x != 0){
int remainder = x%10;
reverse = reverse*10 + remainder;
x/=10;
ndigits++;
}
std::string output(ndigits, '\0');
char * outputp = &output[0];
std::string fmt_string = "%0" + std::to_string(ndigits) + "d";
sprintf(outputp, fmt_string.c_str(), reverse);
return output;
}

示例:

reverse_integer(103400)
[1] "004301"

关于c++ - 在 rccp int 中保留前导零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60590492/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com