我创建了一个替换字符串的函数。
它看起来像这样:
void replace_with(wstring& src, const wstring& what, const wstring& with)
{
if (what != with) {
wstring temp;
wstring::size_type prev_pos = 0, pos = src.find(what, 0);
while ( wstring::npos != pos ) {
temp += wstring(src.begin() + prev_pos, src.begin() + pos) + with;
prev_pos = pos + what.size();
pos = src.find(what, prev_pos);
}
if ( !temp.empty() ) {
src = temp + wstring(src.begin() + prev_pos, src.end());
if (wstring::npos == with.find(what)) {
replace_with(src, what, with);
}
}
}
}
但是,如果我的字符串是 size==1,而“what”正是字符串,它不会替换它。
例如
wstring sThis=L"-";
replace_with(sThis,L"-",L"");
...不会替换“-”。
我看不出我哪里出错了。
有人可以帮忙吗?