gpt4 book ai didi

c - 是否有关于多字节字符串转换为 unicode wstring 的快速实现?

转载 作者:可可西里 更新时间:2023-11-01 09:35:55 26 4
gpt4 key购买 nike

在我的项目中,我采用Aho-Corasick算法在服务器端做了一些消息过滤模式,服务器得到的消息是多字节字符串。但是经过多次测试发现瓶颈是mulitbyte string和unicode wstring之间的转换。我现在用的是一对mbstowcs_s和wcstombs_s,占了整个模式将近95%的时间成本。另外,我试过 MultiByteToWideChar/WideCharToMultiByte,它得到了同样的结果。 所以我想知道是否还有其他更有效的方法来完成这项工作?我的项目是用VS2005搭建的,转换后的字符串会包含汉字。 非常感谢。

最佳答案

有多种可能性。

首先,“多字节字符”是什么意思?您是指 UTF8 还是 ISO DBCS 系统?

如果您查看 UTF8 和 UTF16 的定义,就会发现可以进行高度优化的转换,去除“x”位并重新格式化它们。参见示例 http://www.faqs.org/rfcs/rfc2044.html谈论 UTF8<==>UTF32。针对 UTF16 进行调整很简单。

第二个选项可能是完全在 UTF16 中工作。以 UTF16 格式呈现您的网页(或 UI 对话框或其他)并以这种方式获取用户输入。

如果一切都失败了,除了 Aho-Corasick 之外还有其他字符串算法。可能会寻找适用于您的原始编码的算法。

[2010 年 1 月 29 日添加]参见 http://www.cl.cam.ac.uk/~mgk25/ucs/utf-8-history.txt有关转换的更多信息,包括 mbtowc() 和 wctomb() 的两个 C 实现。这些设计用于处理任意大的 wchar_ts。如果你只有 16 位的 wchar_ts 那么你可以大大简化它。

这些将比标准库中的通用(代码页敏感)版本快得多。

关于c - 是否有关于多字节字符串转换为 unicode wstring 的快速实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2145862/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com