2010-05-23 4 views
6

eine Reihe von Whitespaces Mit:Wie fülle ich einen Abschnitt innerhalb der C++ - Zeichenfolge?

string *str = new string(); 
str->resize(width,' '); 

der Lage, ich möchte fill Länge Zeichen an.

In C es wie

memset(&str[pos],'#', length); 

aussehen würde, wie ich diese ++ Zeichenfolge mit c erreichen kann, habe ich versucht,

string& assign(const string& str, size_type index, size_type len); 

aber dies scheint die ursprüngliche Zeichenfolge truncat. Gibt es einen einfachen C++ - Weg, dies zu tun? Danke.

+0

Gibt es einen Grund, die Zeichenfolge in Ihrem Beispiel dynamisch zuzuweisen? – GManNickG

+1

@GMan - Ich will sie nicht als automatische Variable lieber auf Heap in bösen straddup() Weg – stacker

Antwort

9

Neben string::replace() können Sie std::fill verwenden:

std::fill(str->begin()+pos, str->begin()+pos+length, '#'); 
//or: 
std::fill_n(str->begin()+pos, length, '#'); 

Wenn Sie versuchen, über das Ende der Zeichenfolge hinaus zu füllen, wird es ignoriert.

7

zunächst eine einfache Zeichenfolge erklären Sie keine Zeiger benötigen:

std::string str; 

Zum ausfüllen einer Zeichenfolge mit dem Inhalt einer bestimmten Größe, können Sie den corresonding Konstruktor verwenden:

std::string str(width, ' '); 

Um in Strings zu füllen Sie können u se die ersetzenmethode:

str.replace(pos, length, length , '#'); 

Sie müssen bequeme Überprüfungen tun. Sie können Iteratoren auch direkt verwenden.

Allgemeiner für Behälter (string ist ein Container von Zeichen), können Sie auch die std :: füllen Algorithmus

std::fill(str.begin()+pos, str.begin()+pos+length, '#'); 
+0

Compiler noch beschwert - irgendwelche Vorschläge? Fehler: ungültige Konvertierung von 'char 'nach' const char *' Fehler: Initialisierung von Argument 3 von 'std :: basic_string <_CharT, _Traits, _Alloc> & std :: basic_string <_CharT, _Traits, _Alloc> :: replace (typename _Alloc :: size_type, typename _Alloc :: size_type, const_CharT *) [mit _CharT = char, _Traits = std :: char_traits , _Alloc = std :: allocator ] ' – stacker

Verwandte Themen