有没有办法绕过Visual Studio Community 2015上的错误C2137?我正在使用stringstream
删除字符,但我不想替换它们(即使有空格),我想删除它们,如果我想删除'o'
中的所有'cool'
它变为'cl'
而不是'c l'
。我在Stroustrup的书中看到他写了一个if (...) ch = '';
,但我的编译器给我一个错误,我最好的代理是空白,但仍然是不可接受的。
这是我在C2137中的功能:
string rem_vow(string& s)
{
for (char& c : s)
{
switch (c)
{
case 'A': case 'a': case 'E': case 'e': case 'I':
case 'i': case 'O': case 'o': case 'U': case 'u':
c = '';
break;
default:
break;
}
}
return s;
}
修改
这是我在书中看到的代码:
提前谢谢
答案 0 :(得分:1)
不,为了删除字符串中的字符,您必须将字符串的其余部分移动一步,您不能简单地用“空”字符替换它。您可以使用preg_match("#\('([^']+)#", $string, $matches);
echo $matches[1];
//=> minute stroller workout
方法,但是在迭代字符串时您可能不应该这样做。
你可能应该做的是在遍历原始字符串时构建一个新字符串,如:
erase