2009-01-11 28 views
16

Tôi đang tìm thư viện chuỗi di động và dễ sử dụng cho C/C++, giúp tôi làm việc với đầu vào/đầu ra Unicode. Trong trường hợp tốt nhất, nó sẽ lưu trữ các chuỗi của nó trong bộ nhớ trong UTF-8, và cho phép tôi chuyển đổi chuỗi từ ASCII sang UTF-8/UTF-16 và ngược lại. Tôi không cần nhiều hơn thế nữa (ok, một giấy phép tự do sẽ không bị tổn thương). Tôi đã thấy rằng C + + đi kèm với một tiêu đề <locale>, nhưng điều này dường như chỉ hoạt động trên wchar_t, có thể có hoặc không được mã hóa UTF-16, cộng với tôi không chắc chắn điều này thực sự tốt như thế nào.Thư viện chuỗi unicode đơn giản và cầm tay cho C/C++?

Các trường hợp sử dụng là ví dụ: Trên Windows, API unicode mong đợi chuỗi UTF-16 và tôi cần phải chuyển đổi chuỗi ASCII hoặc UTF-8 để chuyển nó vào API. Cũng tương tự với phân tích cú pháp XML, có thể đi kèm với UTF-16, nhưng tôi thực sự chỉ muốn xử lý nội bộ với UTF-8 (hoặc, cho vấn đề đó, nếu tôi chuyển sang UTF-16, tôi sẽ cần một chuyển đổi dù sao).

Cho đến giờ, tôi đã xem qua số ICU, điều này khá lớn. Hơn nữa, nó muốn được xây dựng bằng cách sử dụng các tệp dự án riêng, trong khi tôi muốn một thư viện có dự án CMake hoặc dễ xây dựng (giống như biên dịch tất cả các tệp .c, liên kết và tốt để đi) , thay vì vận chuyển thứ gì đó lớn như ICU cùng với đơn đăng ký của tôi.

Bạn có biết thư viện như vậy, thư viện này cũng đang được duy trì không? Xét cho cùng, đây có vẻ là một vấn đề khá cơ bản.

Trả lời

19

UTF8-CPP dường như chính xác như bạn muốn.

+0

Bất kỳ ý tưởng như thế nào tốt đó là? Tôi vừa xem nó, có vẻ rất đơn giản, nhưng tôi muốn nghe một số ý kiến ​​về nó. – Anteru

+3

Vâng, bạn sẽ không nghe thấy bất kỳ ý kiến ​​khách quan nào từ tôi vì tôi là tác giả :) Tuy nhiên, tôi chưa có bất kỳ lỗi nào trong hơn một năm và mọi người đang sử dụng nó (250-300 lượt tải xuống một tháng) vì vậy tôi tin rằng nó không phải là xấu :) –

+1

+1 cho UTF8-CPP. Tôi sử dụng nó ở khắp mọi nơi mà tôi phải đối phó với các chuỗi UTF8 trong mã C++ của tôi (và đôi khi utf16) .Rất dễ sử dụng, và rất đẹp C++ 'ish API. –

2

Tôi khuyên bạn nên xem thư viện GNU iconv.

+1

biểu tượngv chỉ cung cấp cho bạn khả năng chuyển đổi giữa các bảng mã khác nhau. Bạn không nhận được những thứ như len() chức năng, chuyển đổi trường hợp, vv –

Các vấn đề liên quan