2016-10-25 12 views
0

私は、文字列を取り込んでそれをフォーマットし、シンボルを取り除き、処理するために大文字小文字を低く設定するプログラムを持っています。単語の間に1つの空白を正確に置きますか?

例:

"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が呼び出され

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

:これを使用して文字列を処理した後、何らかの理由で。

単語の間にハイフンを含む文字列が表示されるまで、自分のプログラムがうまく動作するので、単語間の空白の最大値が1になるようにする方法はありますか?

+0

あなたが提供したコードに基づいて、あなたは[使用するための悪い習慣](http://stackoverflow.com/a/1452738/1863564) –

+0

@QPaysTaxes残念ながら、これは教授が私たちに課題の控除を受けないように依頼した方法です。 – yuritsuki

+0

@QPaysTaxes、それは有効な点ですが、ディスカッションに他のものをほとんど追加していない場合は、それが答えにつながりません。そして、私の役割を果たすために、私はあなたが最後に印刷された文字(スペースかノー)を追跡し、場合によってはスペースを出力しないようにすることができると信じています。もう1つの質問は、「A B - !」が入力されたときにどうなるべきか? – druckermanly

答えて

1

単語間にハイフンを含む文字列が表示されるまで、私のプログラムはうまく動作するため、単語間の空白の最大値が1になるようにする方法はありますか?

はい:erase-removeとtransformを使用して入力文字列を処理する代わりに、入力文字列ストリームを使用して入力文字列を読み込むことを検討してください(教授が要求したとおりにコードを投稿しません:))。

+0

私はそれをやろうとしましたが、代わりに記号などの文字列を処理します – yuritsuki

+0

これを実際の回答に変換してください。 「ヒントはあります」というのは、宿題があるときには大変ですが、後でこの質問を見ている他の人にとってはそれほど重要ではありません。 –

+0

...答えを読んでいる人たちも同じ宿題をしていない限り:) – utnapistim

関連する問題