C# is written in C++. Therefore, what you have available in C# won't be more than what you have available in C++. Same with Java. They introduce nothing over C++... What these languages do is provide a wrapper around what you have in C++ to keep some of the more mundane things out of the picture and are handled more behind the scenes or automatically. They give you a bit cleaner atmosphere to code in. It hides things from the developer. However easier isn't necessarily more powerful or better. I can take anything written in C# or Java and create a C++ program to do the same thing, even if it takes longer.
However, the flip side:
DirectX SDK is only available for C++. Same with Physics libraries, and all that stuff. So while it's possible to write games in C#, its likely if you do decide to write games, you will find it almost harder to do these things in C#/Java than it is to just use native C++.
In the end, depending on your choice, you will find complications going one way or another. Some things are just better suited for a particular task. If you want to write business software, database, GUI screens, etc, then stick with something like a Java or C#, if you want to write games, stick with C++.
If you just want to learn, I'd actually recommend C++ even if its harder and more complicated to get going. Once you understand things there, you will understand what C# is doing when its garbage collecting, and things like that. Because you had to do those things manually in C++, even possibly writing your own garbage collecting scheme. So you will understand the issues and why these things are there.