空字符常量

时间:2015-08-07 13:11:25

标签: c++ compiler-errors visual-studio-2015

有没有办法绕过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;
}

修改

这是我在书中看到的代码:

Code Example

提前谢谢

1 个答案:

答案 0 :(得分:1)

不,为了删除字符串中的字符,您必须将字符串的其余部分移动一步,您不能简单地用“空”字符替换它。您可以使用preg_match("#\('([^']+)#", $string, $matches); echo $matches[1]; //=> minute stroller workout 方法,但是在迭代字符串时您可能不应该这样做。

你可能应该做的是在遍历原始字符串时构建一个新字符串,如:

erase