How to convert an int to a character array when you don't have access to the C++ Standard Library?
Ok, so I have a great way to convert and int (or any other type) to a string using the stringstream from the standard library. This is listed here:
How to convert an int to a string in C++? (Also doubles, floats, etc…)
However, what do you do if you don’t have access to the C++ Standard Library? There is not stringstream or string so the solution in the above linked-to post won’t work.
So I have created a simple class Int.h that can do this conversion without the C++ Standard Library. Notice it is Int.h with a capital “I”.
It handles both positive and negative numbers.
Int.h
#pragma once
class Int
{
public:
// Constructor
Int(int inInt);
// Desctructor
~Int();
// Public functions
void intToCharArray(char inChar[]);
char * intToCharArrayPointer();
private:
// Members
int mInteger;
// Functions
char digitToChar(int inInt);
};
Int.cpp
#include "Int.h"
Int::Int(int inInt)
{
mInteger = inInt;
}
Int::~Int()
{
}
char Int::digitToChar(int inInt)
{
char digit[11] = {'0','1','2','3','4','5','6','7','8','9'};
//digit[0] = '';
for (short i = 0; i < 10; i++)
{
if (inInt == i)
{
return digit[i];
}
}
return '';
}
void Int::intToCharArray(char inChar[])
{
char tmpVal[11];
int tmpInt = mInteger;
bool isNegative = false;
if (mInteger < 0)
{
tmpInt *= -1;
isNegative = true;
}
short i = 0;
while (tmpInt > 0)
{
int rightDigit = tmpInt % 10;
tmpVal[i] = digitToChar(rightDigit);
tmpInt = tmpInt/10;
i++;
}
tmpVal[i--] = '';
// tmpVal should now be the number in reverse.
short j = 0;
if (isNegative)
{
inChar[j++] = '-';
}
while (i > -1)
{
inChar[j++] = tmpVal[i--];
}
inChar[j] = '';
// inChar should now be the number in correct order.
}
char * Int::intToCharArrayPointer()
{
// Integers hold as many as 10 character, plus 1 for the null char.
char * retVal = new char[11];
intToCharArray(retVal);
return retVal;
}
Here is a quick example of how to use it. Load this up in your favorite IDE/debugger.
Main.cpp
#include "Int.h"
int main()
{
Int int1 = 1027;
Int int2 = -2387809;
char * charPtr = int1.intToCharArrayPointer();
char charBuff[11];
int2.intToCharArray(charBuff);
}
I haven’t seen it fail to convert any integers, positive or negative yet. Let me know if you see anything I could improve on.

