Last night as I was typing this message my internet got cut off U_U
Here is what I had for you last night but couldn't post it then:
I could finally solve it.
I used the idea you had on the draft you posted on the first page.
You wanna have a while() that only checks whether or not the 3rd answer string is empty or not. Then just do 3 if() each with 3 comparisons, 1 with the softserve, 1 with the topping and 1 with the sprinkles. Be careful with the order of these if() statements because they will all get evaluated each time you run through the loop and if a string changes, it should change where it won't make other if() true.
You will ask for the softserve as long as the softserve stream is empty, you can make sure it stays empty when an invalid input has been made by not copying the string directly to it but using an auxiliary stream, which you will use for all inputs.
I'll give you a lil hint code
while()
{
if();
if();
if();
getline(cin, choice) //choice is the auxiliary string
if();
if();
if();
}
The first set of 3 if()'s will print the question, the second set will decide which choices compare the input to.
I have the finished code but I thought you might like some help instead of the code itself. I can post the code the next time I log in if that's what you need or you can post yours after reading this post
Good luck.