Начнём с того, что куда считывается строка? Здесь нет нормального выделения памяти под строки: память выделяется только под строковые константы. Поэтому, в зависимости от компилятора, дальше может происходить что угодно, вплоть до падения программы из-за попытки записать в read-only блок.
Далее. Идём и
читаем про оператор >>, а именно:
str
Extracts characters and stores them as a c-string (i.e. in succesive locations starting at location pointed by str and terminated by a null-character). Extraction ends when the next character is either a valid whitespace or a null character, or if the End-Of-File is reached.
The terminating null character is automatically appended after the extracted characters.
Таким образом, даже если всё сработает правильно, оператор читает строку до первого пробела.
Если надо прочитать строку - у потоков есть функция
getline.