ok, the reason != works in this case is because it is one of the relational operators,
the relational operators are != , == , > , < , =< , and =>, these all return a boolian value.
(I know the person that originally asked for help probably knows this, but there seemed to be some confusion about it, so I thought i'd clear that up)
I notice that nSelection is an integer, but you are comparing it to char's in the switch statement.
what he said is true, in order to compare them to int values remove the ' ' from the switch cases.
example, you did "case'1':" should be "case 1:"
but in this case it doesn't really matter, because i'm pretty sure the ascii of 1-9 is 1-9.
that could be written way better than a do while loop IMHO
but even if you want it as a do while loop
the cin should be inside of it, or else it would only work the first time. then when it goes back to it to try it again the value that was used as nselector the first time would be kept every other time it ran.
so you should either include the cin inside the loop, and/or reset the nselector value for each rerun of the program.
-this I think is the main problem you're having / the answer you're looking for.
your default doesn't have a break, it doesn't really need one in this case but it's good practice to always include them in the switch cases.
as others said, it's a bad Idea to use goto functions, it's much better to include the whole thing in another kind of loop,
if you're comfortable using do...while loops you should be more than comfortable using most of the other kinds of loops, so you can figure out a way for it to go back to the middle point of the program without using the goto function.
-got ninja'd