2010-02-13 61 views
2

我目前使用的libc库缺少wctomb(),所以我正在寻找一个替代实现。我应该提防哪些复杂性?我可以简单地抓住wchar中的每个字节并将它们粘在一个char数组中吗?创建一个wchar到多字节字符函数

+0

您希望支持哪种多字节编码? – 2010-02-13 16:40:36

+1

也许你从功能的现有实现抓取灵感:http://www.google.com/codesearch?q=wctomb – Manuel 2010-02-13 16:42:57

+0

小心从开放源代码抓住灵感,如果你要建立密切的源 – Totonga 2010-02-13 16:51:52

回答

0

它取决于什么编码是wchar和你期望在char数组中编码。如果它们是相同的(编码),那么AFAIK是的,你可以逐字节地做,但要小心endiannes。

0

如果你绝对相信你的程序将永远只能处理ASCII数据(这实在是承担了可怕的事情,但它可能是必要的),那么你可以采取的低字节每个wchar_t并将其填入char。但是,如果你必须处理任何类型的Unicode数据,那么你将被卡在实现UTF-8,这是一个最好留给专家的大规模

+1

UTF-8编码并不太难,如果你的字符已经在Unicode中(即在Unicode的其他编码中)。 (但最好不要重新发明轮子并使用一些图书馆。) – Messa 2010-02-13 16:38:31

0

如果wchar是< = 127,那么您可以轻松地将每个wchar分配给char,因此只使用7bit。 只要你检查这一点,并创建一个错误,如果它没有给你你保存并可以这样做。

这是因为Unicode字符的前7位(不管是8位,16位还是32位)与ASCII的前7位相同。

如果你真的想写一个转换器,你需要知道很多字符表等等。

有一个全功能的Unicode库调用ICU这是由IBM的启发。它非常强大。但如果没有任何帮助,它可能会有帮助