123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- <chapter xml:id="utf8.writer.h">
- <title><tt>__vic/utf8/writer.h</tt></title>
- <chapter xml:id="utf8--writer">
- <title><tt>utf8::writer</tt></title>
- <code-block lang="C++"><![CDATA[
- template<class ByteWriter>
- class utf8::writer
- {
- public:
- using byte_writer_type = ByteWriter;
- ByteWriter &get_byte_writer();
- const ByteWriter &get_byte_writer() const;
- template<class... Args>
- explicit writer(Args&&... args); // since C++11
- writer(); // C++98 only
- explicit writer(ByteWriter w); // C++98 only
- void write(unicode_t cp);
- };
- template<class ByteWriter>
- utf8::writer<ByteWriter> utf8::make_writer(ByteWriter w);
- ]]></code-block>
- <p>Пишет UTF-8 code points в последовательность байтов. Для вывода байтов
- используется <tt>ByteWriter</tt>, моделирующий <tt>Writer<unsigned char></tt>
- (см. <xref to="writers"/>).</p>
- <section><title>Члены класса</title>
- <synopsis>
- <prototype>ByteWriter &get_byte_writer()</prototype>
- <prototype>const ByteWriter &get_byte_writer() const</prototype>
- <p>Возвращает ссылку на используемый byte writer.</p>
- </synopsis>
- <synopsis>
- <prototype>template<class... Args>
- explicit writer(Args&&... args) <sign>C++11</sign></prototype>
- <p>Передаёт все параметры в используемый byte writer.</p>
- </synopsis>
- <synopsis>
- <prototype>writer() <sign>C++98 only</sign></prototype>
- <prototype>explicit writer(ByteWriter r) <sign>C++98 only</sign></prototype>
- <p>Конструкторы для режима C++98.</p>
- </synopsis>
- <synopsis>
- <prototype>void write(unicode_t cp)</prototype>
- <p>Выводит указанный code point согласно правилам кодирования UTF-8.
- Для записи отдельных байтов используется <tt>ByteWriter::write()</tt>.</p>
- </synopsis>
- </section>
- <section><title>Свободные функции</title>
- <synopsis>
- <prototype>template<class ByteWriter>
- utf8::writer<ByteWriter> utf8::make_writer(ByteWriter w)</prototype>
- <p>Создаёт UTF-8 writer используя указанный <tt>ByteWriter</tt>.</p>
- </synopsis>
- </section>
- <section><title>Пример</title>
- <code-block lang="C++"><![CDATA[
- #include<__vic/utf8/writer.h>
- #include<__vic/writers/string.h>
- #include<string>
- #include<vector>
- // C++11
- using utf8_string_writer = __vic::utf8::writer<__vic::string_writer>;
- // C++98
- struct utf8_string_writer : __vic::utf8::writer<__vic::string_writer>
- {
- explicit utf8_string_writer(std::string &s)
- : __vic::utf8::writer<__vic::string_writer>(__vic::string_writer(s)) {}
- };
- std::string encode_utf8(const std::vector<__vic::unicode_t> &code_points)
- {
- std::string utf8_res;
- utf8_string_writer w(utf8_res);
- for(auto cp : code_points) w.write(cp);
- return utf8_res;
- }
- ]]></code-block>
- </section>
- </chapter>
- </chapter>
|