为什么我会收到错误 C3851(通用字符名称无法指定基本字符集中的字符)



我一直在尝试从这里翻译一个示例空格去除器,以便在 C++-cli 项目中运行。就智能感知而言,以下内容看起来不错:

static String^ TrimAllWithInplaceCharArray(String^ str)
{
    unsigned int len = str->Length;
    array<wchar_t, 1>^ src = str->ToCharArray();
    int dstIdx = 0;
    for (unsigned int i = 0; i < len; i++) {
        wchar_t ch = src[i];
        switch (ch) {
            case L'u0020': case L'u00A0': case L'u1680': case L'u2000': case L'u2001':
            case L'u2002': case L'u2003': case L'u2004': case L'u2005': case L'u2006':
            case L'u2007': case L'u2008': case L'u2009': case L'u200A': case L'u202F':
            case L'u205F': case L'u3000': case L'u2028': case L'u2029': case L'u0009':
            case L'u000A': case L'u000B': case L'u000C': case L'u000D': case L'u0085':
                continue;
            default:
                src[dstIdx++] = ch;
                break;
        }
    }
    return gcnew String(src, 0, dstIdx);
}

。但不编译:

error C3851 : 'u0020' : a universal - character - name cannot designate a character in the basic character set
error C3850 : 'u0009' : a universal - character - name specifies an invalid character
error C3850 : 'u000A' : a universal - character - name specifies an invalid character
error C2196 : case value '63' already used
error C3850 : 'u000B' : a universal - character - name specifies an invalid character
error C2196 : case value '63' already used
error C3850 : 'u000C' : a universal - character - name specifies an invalid character
error C2196 : case value '63' already used
error C3850 : 'u000D' : a universal - character - name specifies an invalid character
error C2196 : case value '63' already used
error C3850 : 'u0085' : a universal - character - name specifies an invalid character
error C2196 : case value '63' already used

我是否以某种方式错误地表示数据类型或文字值?

看看以下方法是否有效...

static String^ TrimAllWithInplaceCharArray(String^ str)
{
    unsigned int len = str->Length;
    array<wchar_t, 1>^ src = str->ToCharArray();
    int dstIdx = 0;
    for (unsigned int i = 0; i < len; i++) {
        wchar_t ch = src[i];
        switch (ch) {
        case L'x20': case L'xA0': case L'u1680': case L'u2000': case L'u2001':
        case L'u2002': case L'u2003': case L'u2004': case L'u2005': case L'u2006':
        case L'u2007': case L'u2008': case L'u2009': case L'u200A': case L'u202F':
        case L'u205F': case L'u3000': case L'u2028': case L'u2029': case L'x09':
        case L'x0A': case L'x0B': case L'x0C': case L'x0D': case L'x85':
            continue;
        default:
            src[dstIdx++] = ch;
            break;
        }
    }
    return gcnew String(src, 0, dstIdx);
}

在这里找到这个...

"您不能使用 - u0022,因为您不能使用 通用字符名称,用于指定基本字符 字符集。

最新更新