在c+中修剪字符串+; 你好,我在C++中有一个修剪字符串的问题。它在结尾添加了一些奇怪的字符 绳子

在c+中修剪字符串+; 你好,我在C++中有一个修剪字符串的问题。它在结尾添加了一些奇怪的字符 绳子,c++,replace,trim,C++,Replace,Trim,我敢打赌,您正在呼叫subst,而cnew设置为零。您希望这会删除字符,但它不是这样做的。正如它的名字所暗示的那样,它将它们替换为零 那么: 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

我敢打赌,您正在呼叫
subst
,而
cnew
设置为零。您希望这会删除字符,但它不是这样做的。正如它的名字所暗示的那样,它将它们替换为零

那么:

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
}

这个函数是如何调用的?它应该做什么?什么是
数据
?您是如何确定它在字符串末尾添加了奇怪的字符的?返回对您刚刚分配的字符串的引用是一个坏主意-这会使所有权变得非常不清楚。您可能只想返回字符串,然后在本地分配一个字符串(即没有新字符串),以便可以按值返回。
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
}