У меня есть программа, которая берет строку и форматирует ее, избавляя ее от символов и устанавливая корпус для опускания, чтобы его можно было обработать.Оставив ровно одну пробел между словами?
Пример:
"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?
На основе кода, который вы предоставили, вы используете 'namespace std;', что является [плохой привычкой входить] (http://stackoverflow.com/a/1452738/1863564) –
@QPaysTaxes Я понимаю, что, спасибо, к сожалению, это метод, который просил профессор, чтобы мы не получали отчисления на задания. – yuritsuki
@QPaysTaxes, это действительная точка, но если вы добавили немного другого в дискуссию, я бы рекомендовал не указывать это в одиночку, поскольку это не способствует ответу или обсуждению, которое приводит к ответу. И чтобы сделать свою часть: ameizing, я считаю, что вы можете следить за тем, что напечатал последний символ (пробел или нет), и избегать вывода пробелов в определенных случаях. Другой вопрос, что должно произойти, когда введен «A B -!»? – druckermanly