c++ - 替换字符串 C++ 中的无效 XML unicode 序列

标签 c++ string unicode xml-parsing

在 C++ 中寻找与 Java 中的 Character.isIdentifierIgnorable() 对应的函数。基本上我必须用从它们派生的另一个字符串替换它们(这样信息就不会丢失)。

我在 Java 中的实现:

public static String replaceInvalidChar (String s) {
     StringBuffer sb = new StringBuffer();

     char[] characters = s.toCharArray();

     for (char c : characters) {
             if (Character.isIdentifierIgnorable(c)){
                     sb.append(String.format("\\u%04x", (int)c));
             } else {
                     sb.append(c);
             }
     }

     return sb.toString();
}

打算在 C++ 中做同样的事情,但为了替换字符,我需要先检测它们。有人可以帮助我吗?

最佳答案

根据我收集到的有关 Character.isIdentifierIgnorable() 工作原理的信息,以下内容可能对您有用:

std::wstring replaceInvalidChar(std::wstring const& s)
{
    std::wostringstream sb;

    for(auto c: s)
    {
        if(std::iswcntrl(c) && !std::iswspace(c))
            sb << L"\\u" << std::hex << std::setw(4) << std::setfill(L'0') << int(c);
        else
            sb << wchar_t(c);
    }

    return sb.str();
}

关于c++ - 替换字符串 C++ 中的无效 XML unicode 序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47027855/

相关文章:

c++ - 访问封闭类的 protected 成员 [嵌套类]

css - 如何在 Angular 组件的样式标签中使用字符串插值?

bash - 在具有唯一分隔符的文件上使用 bash 中的 cut

c++ - 从 String 转换为 Unsigned Long 并返回

C++ 附加身份不安全示例 (a+0.0 != a)

string - 如何在 Go 中通过 rune 迭代字符串?

python - 如何在Excel或Python中转换来自Jira的 '3w 1d 4h'小时格式的数据?

c# - 如果在所选字体 (Tahoma) 中找不到 Unicode 字符,则使用什么字体?

javascript - 如何忽略javascript中的转义字符?

c++ - 自动比较两个系列-相异性测试