A lot of the members on this forum look towards Project Euler (
http://projecteuler.net/) to challenge them. There is also a few sites online that offer programming challenges. Just Google C++ Challenges, Programming Challenges, C++ Tests, C++ Practice, etc. I typically check out the forums and look for people that need help or post homework questions. If you can do everyone you come across, you should probably be helping out on the forum more.
Aside from that, I'd suggest looking into expanding your knowledge on whatever weaknesses you have. For me, I was horrible at pointers, but I attempted to take a stab recreating the STL list container. It's hard work to get it work just like the STL version, but it's the challenge that's worthwhile. Most recently, I implemented a sort algorithm. I've never "sorted" before besides the use of a bubble sort. I expanded my knowledge into a Merge Sort, and typed the code to be efficient.
Some other ideas are look into GUI programming. There are a lot of options out there, you just need to pick the one that works best for you.
Last, but not least, if you've found you can't expand your knowledge anymore, or you're just feeling lazy, I'd suggest picking up a higher level language like lisp.
Most importantly, you have to know what you want.