1

このコードを使用してWideStringをフォーマットしていますが、成功していません。予期しない結果を出力します:(

これが私のコードです

WideString s;
dep=new TStringList();
while(!DM->tDepPln->Eof)
    {
    //where tDepPlnFltNo is mysql field type of WideString
        s.sprintf(L"%-11S",DM->tDepPlnFltNo->AsWideString);
        dep->Add(s);
        DM->tDepPln->Next();
    }

使用するs.sprintf(L"%-11S","blablabla");と機能しますが、WideStringのmysqlフィールドタイプに設定すると機能しません!! 問題はコンバージョンにあると思います!

それを修正する方法???

4

1 に答える 1

2

フォーマット指定子は大文字を使用していますS。これは、Unicodeフレーバーの...printf()関数(内部で使用されるものなどWideString:::sprintf())に(のchar*代わりに期待する関数wchar_t*のAnsiフレーバー)の代わりに期待するように指示します。それが機能する理由です-あなたはそれを渡します。...printf()wchar_t*char*s.sprintf(L"%-11S","blablabla")char*

s試みていることについては、代わりに小文字を使用する必要があります。また、関数に値をWideString::c_bstr()渡すときにこのメソッドを使用する必要があります。例:WideString...printf()

s.sprintf(L"%-11s", DM->tDepPlnFltNo->AsWideString.c_bstr());
于 2011-11-23T22:16:08.393 に答える