Вам не повезло с оператором потока по умолчанию >> (если это действительно ваш случай).
1: знать формат
Путь вперед - знать формат , о котором, судя по вашему сообщению, вы несколько сомневаетесь.
2: Используйте лучшие инструменты для работы
После этого вы выбираете правильный инструмент для задания . Это может включать: std :: getline и handpassing, возможно, с использованием regex (в вашем случае, довольно просто), boost :: spirit, методов токенизации, boost :: string_algo, lex / bison и других.
Я бы добавил, что настройка функциональности потокового оператора (хотя и возможная) редко является простым выбором.
3: Создайте свой формат, соответствующий
В качестве альтернативы знанию формата, если вы можете создать его, тем лучше. Если у вас есть формат стиля записи, простой способ обработки строк с пробелами состоит в том, чтобы поместить строку в последнюю очередь, а затем поместить каждую запись в строку. Таким образом, вы можете сначала просмотреть каждую строку, используя, например. std::getline
, а затем просто используйте потоковые операторы для остальных - зная, что строка будет последней. Другие разделители (кроме перевода строки), безусловно, также возможны.