2012-06-24 66 views
0

你好,我在修剪C++中的字符串時遇到了問題。它在 字符串的末尾添加了一些奇怪的字符。在C++中修剪字符串

string& Napis::subst(char cold, char cnew) { 
    string * s = new string(data); 
    replace(s->begin(),s->end(), cold, cnew); 
    return *s; // takes back string s with changed sign 
} 
+2

怎麼叫這個功能呢?它應該做什麼?什麼是'數據'?你是如何確定它在字符串的末尾添加了奇怪的字符? –

+2

返回對剛剛分配的字符串的引用是一個壞主意 - 它使所有權非常不明確。您可能只想返回字符串,然後在本地分配一個(即不新),以便您可以按值返回。 – Flexo

回答

1

我敢打賭,你與cnew設置爲零調用subst。你期望這個刪除字符,但這不是它所做的。正如顧名思義,它用零代替它們。

如何:

string Napis::subst(char cold, char cnew) { 
    assert(cnew != 0); 
    string s = data; 
    replace(s.begin(), s.end(), cold, cnew); 
    return s; // takes back string s with changed sign 
}