What you're trying to do is impractical for several reasons. Even a 256-bit floating point variable won't go out to 10 million digits. In addition, floating point will not do for your needs. The double, a 64-bit floating point variable type, has 52 bits for the mantiff (the part that isn't the exponent or sign). That means, after 2^52 (4,503,599,627,370,496), adding 1 won't change the value at all giving you an infinite loop. Thus, you'll see this as your output if the E gets removed and commas are inserted:
4,503,599,627,370,494
4,503,599,627,370,495
4,503,599,627,370,496 // limit reached - mantiff bits shifted right one
4,503,599,627,370,496 // adding 1 is now too imprecise, having no effect
4,503,599,627,370,496 // same here
In addition, today's hard drives don't even have close to enough capacity to write every single number from 0 to 4,503,599,627,370,496 (that's 4.5 quadrillion, so even if each number was 1 byte, you'd need 1500 of today's 3 TB hard drives to store all that though the actual value is about 17.9 times more than that). However, if you're starting from a value 1000 less than that and incrementing to that, then it makes sense.
Also, the "int" does not cap at 65,535 - that's the "short" you're thinking of (assuming unsigned). The "int" is 32-bit and goes to 4,294,967,295. The "__int64" (a 64-bit integer) goes to 18,446,744,073,709,551,615. For 10 million digits, you'll need a variable that's at least "10000000/log10(2)" or 33,219,281 bits (the nearest power of 2 to that is 2^25 or 33,554,432. I have no idea how to program something to use a single variable of that many bits but that's what it will take.
Do note that I don't know C++. I do know C (which is similar) and I'm programming my game in C and I know C very well. Knowing the variable types and their pros and cons is essential to most any programming.
Edit: I use sprintf to get better control on my output. It works with floating point and does get rid of the E. If you want to get rid of the + after the E or insert commas, that I don't know other than writing my own number-formatting function, of which I've done for my game. You use sprintf like this (in C format):
char MyString[256]; // big enough to store the number you want
double MyNumber;
// in a function
MyNumber = 13740000000.0; // age of the universe in years
sprintf(NumberString, "The universe is %11.0f years old. That's old!", MyNumber);
// what you'll see:
The universe is 13740000000 years old. That's old!
%11.0f is the formatting rule. The f at the end means floating point in standard format (no exponents). The 11 is the number of characters the string output will be. The .0 means you want 0 decimal places, essentially dropping the decimal at the end. You'd use %13.1f if you want to include one digit after the decimal and adjusted to account for this. A value less than 11 still works - you won't get any extra gaps.