C++ 如何初始化字符串以包含c+中所需的位数+;?

C++ 如何初始化字符串以包含c+中所需的位数+;?,c++,arrays,string,C++,Arrays,String,我想出了一种将数字转换成字符串的非标准方法。但是字符串只能容纳与我初始化它时使用的空格数相同的数字。如何正确初始化它以包含我所需的数字 using namespace std; string numbertostring(int n) { int size=0; string number=" "; while(n) { number[size]=n%10+'0'; size++; n/=10;

我想出了一种将数字转换成字符串的非标准方法。但是字符串只能容纳与我初始化它时使用的空格数相同的数字。如何正确初始化它以包含我所需的数字

using namespace std;

string numbertostring(int n)
{
    int size=0;
    string number="            ";
    while(n)
    {
      number[size]=n%10+'0';
      size++;
      n/=10;
    }
    int i,j;
    for(i=0,j=size-1;i<j;++i,--j)
    swap(number[i],number[j]);
    return number;
} 

int main()
{
    cout<<numbertostring(1234)<<endl;
    return 0;
}
使用名称空间std;
字符串编号字符串(int n)
{
int size=0;
字符串编号=”;
while(n)
{
数字[大小]=n%10+'0';
大小++;
n/=10;
}
int i,j;

对于(i=0,j=size-1;i您问题的字面答案是整数类型可以容纳的最大位数等于以下表达式:

std::ceil(std::numeric_limits<TYPE>::digits10)
另外,请注意:

最后,自C++11以来就存在:

std::string numbertostring(int n)
{
    return std::to_string(n);
}

只使用整数所消耗的位数与它用来写入它的基数的对数成正比。此外,String有一个推送方法。Anubhav,我投票赞成关闭,因为标题中的问题“如何在C++中转换一个数为字符串”,重复一个现有的问题。但是,如果你真正的问题是文本中的一个问题,“如何正确初始化它以包含我所需的数字”,请这样说,我将投票重新打开。@Robᵩ 我改了
std::string numbertostring(int n)
{
    std::string number;
    while(n)
    {
      number.push_back(n%10+'0');
      n/=10;
    }
    int i,j;
    for(i=0,j=number.size()-1;i<j;++i,--j)
        std::swap(number[i],number[j]);
    return number;
}
std::string numbertostring(int n)
{
    std::string number;
    while(n)
    {
      number.push_back(n%10+'0');
      n/=10;
    }
    std::reverse(number.begin(), number.end());
    return number;
}
std::string numbertostring(int n)
{
    return std::to_string(n);
}