2012-06-24 68 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 
}