ホーム > デベロッパ > SophiaFramework > BREW C++ 逆引きコード集

BREW C++ プログラミング : SophiaFramework 逆引き FAQ・コード集

ANSI 文字列のストリームから WIDE 文字列を作成する

ANSI 文字列のストリームから WIDE 文字列を効率よく作成する例

UInt32 length;
SFXBinaryStreamReader stream;
SFXBuffer buffer;
SFXAnsiString ansi;
SFXWideString wide;
SFCError error(SFERR_NO_ERROR);

length = 10; // for test

// ストリームから読み込むためのバッファを確保する
// 文字列クラスへのバッファの委譲では、最後の文字にあたる
// バッファはヌル文字で上書きされる
//  +1 が必要
if ((error = buffer.SetSize(length + 1)) == SFERR_NO_ERROR) {

    // ストリームから ANSI 文字列を読み込む
    if ((error = stream.Read(buffer.GetBuffer(), length)) == SFERR_NO_ERROR) {

        // 最後の文字をヌル終端する
        buffer[length] = '\0';

        // ansi 変数にバッファを委譲する
        if ((error = ansi.AttachSFXBuffer(&buffer)) == SFERR_NO_ERROR) {

            // ANSI 文字列から WIDE 文字列へ変換する
            if ((error = wide.Set(ansi)) == SFERR_NO_ERROR) {

                // wide 変数は有効
                // この例ではバッファのコピーは2回
            }
        }
    }
}