2012-04-15 15 views
0

Ich weiß, wie man einen Text eingibt und weiße Räume überspringt, aber wie ist es, wenn es eine Schnur ist? Während der Code erhalte ich eine Zeichenfolge mit so etwas wieC++ - Skips in Zeichenfolge?

asdasd asdads asdasd asdasd

und so muss ich es den ganzen Raum entfernen. Also gibt es eine Art zu schreiben skipws(string_text);?

+0

Was meinen Sie "entfernen" ? Möchten Sie eine Zeichenfolge mit den gespleißten Leerzeichen erstellen oder möchten Sie sie ignorieren, während Sie darüber hinausgehen? – Potatoswatter

Antwort

2

verketten wenn Sie eine Zeichenfolge mit dem Wert konstruieren wollen asdasdasdadsasdasdasdasd, können Sie die remove-Lösch Idiom verwenden:

str.erase(std::remove(str.begin(), str.end(), ' '), str.end()); 

oder mit ::isspace von <ctype.h>,

str.erase(std::remove_if(str.begin(), str.end(), ::isspace), str.end()); 
0

Es gibt keinen allgemeinen Weg. Sie finden verwenden könnte/ersetzen in Tandem, das zu tun, oder Sie können einen stringstream (initialisiert mit dem Eingabestring) und >> ohne Leerzeichen, die Worte zu bekommen verwenden verwenden und die Ergebnisse in (einen anderen/die gleiche) string

+0

welche ersatzfunktion meinen sie? – sehe

+0

@sehe - [std :: string :: replace] (http://www.cplusplus.com/reference/string/string/replace/) (und [std :: string :: find] (http: // www .cplusplus.com/reference/string/string/finden /)) – Attila

+0

@Attila Das wäre O (N^2). – Potatoswatter