C++ 将整数转换为较大的向量或字符串

C++ 将整数转换为较大的向量或字符串,c++,C++,我正在Visual Studio 2013中将十进制整数转换为二进制,而不使用字符串: int de2bi(int de) { int bi = 0, pos = 1; while(de > 0) { bi = bi + (de % 2) * pos; de = de / 2; pos *= 10; } return bin; } 这样,输出中的二进制表示实际上是一个十进制数。问题是我想要控制二进制输出中的位数,即,我想要00而不是0,或者我想要01而不是1 如何

我正在Visual Studio 2013中将十进制整数转换为二进制,而不使用字符串:

int de2bi(int de)
{
int bi = 0, pos = 1;
while(de > 0)
{
    bi = bi + (de % 2) * pos;
    de = de / 2;
    pos *= 10;
}
return bin;
}
这样,输出中的二进制表示实际上是一个十进制数。问题是我想要控制二进制输出中的位数,即,我想要00而不是0,或者我想要01而不是1

如何将输出转换为具有适当大小的向量/字符串,以便在转换十进制数“1”时,根据输出中需要的位数,返回的输出中可以有“001”或“0001”

编辑:我采用了下面答案中的代码。但它并没有改变我代码中输出向量“bin”的长度。它只在屏幕上打印“000”

std::cout<<std::setw(3)<<std::setfill('0')<<bin;    
您可以在此处进行测试

调用de2bi函数后,您可以将结果n显示为w字符宽的输出,如下所示:

#include <iomanip>

std::cout << std::setw(w) << std::setfill('0') << n;
例如,如果w为3,n为1,则得到001


还有许多其他S.O.问题和答案以更直接的方式显示二进制数字,例如…

@Jerry先生,谢谢。我正在使用std::string in=de2bi3;我想在[0]中看到printf%s;或printf%s,在[1]中;如何访问它们?在de==0的情况下,我不一定要返回0,但根据代码中所需的大小,我可能需要00、000或0000。您可以使用printf%c,在[1]中,它适用于de2bi3,但如果我要将小数从0转换为3,即我需要00、01、10、11,而不是0、1、10、11,该怎么办?如何生成零msb?我想控制返回字符串的大小。您能解释一下吗?由于某些原因,我不能使用@Elnaz hmmm。。。你也包括了吗?如果没有-抱歉没有提及-我认为这是理所当然的。你不应该试图避免性病。。。这是C++的最佳实践。如果您仍然有问题,请发布您的确切代码作为对您的问题的编辑,我将很高兴地看一看。干杯。我使用std::string number=de2bi0;然后我想让我的数字是000,而不是0。我是printf%c,编号[1]。上述评论是我的错误。但是,再次使用上面的代码行并没有将n的长度从1更改为3。我希望实际上有一个长度为3的向量,而不仅仅是显示。@Elnaz:std::string number=de2bi0;您问题中的de2bi函数没有返回std::字符串。我上面的建议是杰里先生的另一个选择——不是你可以结合的东西。
#include <iomanip>

std::cout << std::setw(w) << std::setfill('0') << n;