Jeg tror at dit problem er at du bruger >> til at læse med.
Det er meget sjældent en god idé.
Med strings eller arrays af char bør man bruge getline, f.e.x:
#include <iostream>
#include <string>
int main()
{
std::string s;
std::cout << "Enter a string with spaces: ";
std::cout.flush();
std::getline(std::cin, s);
std::cout << "You wrote: " << s << std::endl;
char Buf[123];
std::cout << "Enter a string with spaces: ";
std::cin.getline(Buf, sizeof(Buf));
std::cout << "You wrote: "<< Buf << std::endl;
return 0;
}