2010-05-23 36 views
6

有空格的字符串:如何填寫C++字符串中的一個部分?

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

我想在一個位置 填充長度字符。

在C它看起來像

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

如何與C++字符串實現這一點,我想

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

但這似乎truncat原始字符串。 有沒有一個簡單的C++方法來做到這一點? 謝謝。

+0

在你的例子中是否有動態分配字符串的理由? – GManNickG 2010-05-23 10:05:25

+1

@GMan - 我不希望他們作爲自動變量,而是在邪惡的strdup()方式堆 – stacker 2010-05-23 10:30:31

回答

9

除了string::replace()你可以使用std::fill

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

如果嘗試填充字符串的末尾,它將被忽略。

7

一是一切,申報一個簡單的字符串,你不需要指針:

std::string str; 

與給定尺寸的內容填寫一個字符串,你可以使用corresonding構造:

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

爲了填補字符串,你可以ü se替換方法:

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

您必須做方便的檢查。你也可以直接使用迭代器。

一般多爲集裝箱(串字符的容器),你也可以使用的std ::填補算法

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

編譯器仍然抱怨 - 有什麼建議嗎? 錯誤:無效從'char'轉換爲'const char *' 錯誤:初始化std :: basic_string <_CharT,_Traits,_Alloc>&std :: basic_string <_CharT,_Traits,_Alloc>的參數3。替換(typename _Alloc :: size_type,typename _Alloc :: size_type,const _CharT *)[with _CharT = char,_Traits = std :: char_traits ,_Alloc = std :: allocator ]' – stacker 2010-05-23 10:13:21

相關問題