One problem with saying C or C++ is that it's a monstrously huge area to cover. To get anywhere you need to think like yabasic or blitz or freebasic where there is only one strict version of the language, and everyone is targetting the same platform, Win32 Windows.
With C++ you could be covering anything from a PS1 Mod chip up to an IBM supercomputer!
So the plan should be to pick one of the free C compilers, devC++, OpenWatcom, lcc, gcc whatever, and then pick a target OS.
The assembler group has the same problem, with some archaic(!) <64Kb 16bit DOS programs and other far more complicated stuff.
Under Windows you can target command prompt stuff, like some of the ASCII demos, so it runs in a command shell, or you can open full GUI Windows. But at that point you're not so much learning C++ as learning how to program Windows. TinyPTC exists as a C library too, if that tickles your fancy?
C itself isn't much more complicated than the freebasic code you've all been writing, C++ is a much, much bigger adventure. I suspect nobody in the world knows that language and its runtime library completely. The ISO Standard is over 700 pages long!
So really, it depends what you want. You have to narrow the field you're looking at to get anywhere.
All IMHO.
Jim