2016-10-25 8 views
0

У меня есть программа, которая берет строку и форматирует ее, избавляя ее от символов и устанавливая корпус для опускания, чтобы его можно было обработать.Оставив ровно одну пробел между словами?

Пример:

"Man, this is super trippy!" -> "man this is super trippy" 
"YOU are entering a NEW dimension!" -> "you are entering a new dimenstion" 

К сожалению, обработка некоторых строк вызывает там быть лишние пробелы между словами.

Пример:

"Wait a minute -- this is too groovy!" -> "wait a minute this is too groovy" 
"TONIGHT -- we DINE IN hell!" -> "tonight we dine in hell" 

Обратите внимание на пробелы в последних двух примерах? По какой-то причине, после обработки строк с помощью этого:

line.erase(remove(line.begin(), line.end(), toExclude[i]), line.end()); 
transform(line.begin(), line.end(), line.begin(), tolower); 

где line.erase вызывается при переборе строки, чтобы удалить определенные экземпляры гольца, и преобразования наборов всю вещь в нижний регистр.

Поскольку моя программа работает нормально до тех пор, пока я не перейду к строкам с дефисами между словами, существует ли способ гарантировать, что максимальные пробелы между словами остаются в 1?

+0

На основе кода, который вы предоставили, вы используете 'namespace std;', что является [плохой привычкой входить] (http://stackoverflow.com/a/1452738/1863564) –

+0

@QPaysTaxes Я понимаю, что, спасибо, к сожалению, это метод, который просил профессор, чтобы мы не получали отчисления на задания. – yuritsuki

+0

@QPaysTaxes, это действительная точка, но если вы добавили немного другого в дискуссию, я бы рекомендовал не указывать это в одиночку, поскольку это не способствует ответу или обсуждению, которое приводит к ответу. И чтобы сделать свою часть: ameizing, я считаю, что вы можете следить за тем, что напечатал последний символ (пробел или нет), и избегать вывода пробелов в определенных случаях. Другой вопрос, что должно произойти, когда введен «A B -!»? – druckermanly

ответ

1

Поскольку моя программа работает нормально до тех пор, пока я не перейду к строкам с дефисами между словами, существует ли способ гарантировать, что максимальные пробелы между словами остаются в 1?

Да: вместо обработки входной строки, используя удаление-удаление и преобразование, рассмотрим возможность чтения входной строки с использованием потока входных строк (я не буду публиковать код, поскольку это было запрошено вашим профессором :)).

+0

Я пробовал это сделать, но вместо этого он обрабатывает строки с символами и такие – yuritsuki

+0

Пожалуйста, преобразуйте это в реальный ответ; «вот подсказка» отлично, когда это домашнее задание, но не так много для других людей, которые смотрят на этот вопрос позже. –

+0

... если люди, читающие ответ, тоже выполняют одно домашнее задание :) – utnapistim