POCOの文字列、テキスト、フォーマット(3)

3061 ワード

テキストエンコーディング
std::stringおよびI/Oストリームで異なる文字符号化を使用する場合、Pocoはいくつかのサポートを提供します.
ストリームに書き込まれる文字列と文字は、異なる符号化間で変換することができる.
マルチバイト符号化文字列内の特定の反復クラスを使用して、すべての文字に反復を適用することができる.
現在、ASCII、Latin-1、Latin-9、Windows-1252、UTF-8、UTF-16がサポートされています.
POCOが推奨する符号化はUTF-8である.
Poco::TextConverterは文字コード変換に使用します.
#include "Poco/TextConverter.h"
ソース符号化とターゲット符号化はパラメータとしてTextConverterに渡され,convertメソッドは具体的な変換を実行する.
#include "Poco/TextConverter.h"
#include "Poco/Latin1Encoding.h"
#include "Poco/UTF8Encoding.h"
#include 
using Poco::TextConverter;
using Poco::Latin1Encoding;
using Poco::UTF8Encoding;
int main(int argc, char** argv)
{
std::string latin1String("This is Latin-1 encoded text.");
std::string utf8String;
Latin1Encoding latin1;
UTF8Encoding utf8;
TextConverter converter(latin1, utf8);
converter.convert(latin1String, utf8String);
std::cout << utf8String << std::endl;
return 0;
}

ストリーム変換クラス
Poco::OutputStreamConverterの役割は1つのフィルタに似ていて、自分に書き込まれたすべての文字を他の符号化に変換します.
そして結果をストリームに伝えます.
Poco::InputStreamConverter類似.
#include "Poco/StreamConverter.h"
#include "Poco/StreamConverter.h"
#include "Poco/Latin1Encoding.h"
#include "Poco/UTF8Encoding.h"
#include 
using Poco::OutputStreamConverter;
using Poco::Latin1Encoding;
using Poco::UTF8Encoding;
int main(int argc, char** argv)
{
std::string latin1String("This is Latin-1 encoded text.");
Latin1Encoding latin1;
UTF8Encoding utf8;
OutputStreamConverter converter(std::cout, latin1, utf8);
converter << latin1String << std::endl; // console output will be UTF-8
return 0;
}

テキスト反復クラス
Poco::TextIteratorはstd::stringのUnicode文字を反復するために使用されます.
#include "Poco/TextIterator.h"
文字列は、UTF-8のようなサポートされている任意の符号化タイプであってもよい.
#include "Poco/TextIterator.h"
#include "Poco/UTF8Encoding.h"
using Poco::TextIterator;
using Poco::UTF8Encoding;
int main(int argc, char** argv)
{
std::string utf8String("h .");
UTF8Encoding utf8;
TextIterator it(utf8String, utf8);
TextIterator end(utf8String);
for (; it != end; ++it)
{
int unicode = *it;
}
return 0;
}

POCOとUnicode
最新のUnixシステムはLinuxを含み、端末I/Oとファイルシステムの両方でUTF-8をサポートしている.
UTF-8は、C文字列またはstd::stringに格納することができる.
Windowsシステムでは、POCOはUnicodeをサポートし、1.3.0以降がデフォルトのサポートです.
POCOライブラリとクライアントコードをコンパイルする場合は、前処理マクロPOCO_を定義する必要があります.WIN32_UTF8.
POCOは、WindowsAPI関数のUnicode変数を呼び出すか、UTF-8とUTF-16の間で変換することができる.
Poco::Unicodeクラスは、Unicode文字属性の基本的なサポートを提供します.
void properties(int ch, CharacterProperties& props)
unicode文字chのプロパティを返します.
bool isLower(int ch)
bool isUpper(int ch)
大文字/小文字を確認します.
int toLower(int ch)
int toUpper(int ch)
大文字と小文字の変換
Poco::UTF 8クラス(#include"Poco/UTF 8 String.h")
ICompare,toUpper()and toLower()の実装を提供し,UTF-8に役立つ.
文字列がUTF 8で符号化されていることを知っている場合は、独立した関数ではなく、できるだけUTF 8の静的メンバー関数を使用します.