0

シリアル化されたデータを転送する必要があるプロジェクトに取り組んでいます。データはブーストフレームワークを使用してシリアル化され、文字列ストリームに格納され、最後にstd::stringに格納されます。データを送信するために、データ(char *として格納され、指定された!)と文字列の長さの両方が格納され、宛先で抽出できます。ただし、データを抽出しようとすると、空の文字列しか取得されません。私がこれまでに試した方法は次のとおりです。

C[i]=*new std::string(content, getDataChunk(), content.getDataLength());

また

C[i].append(content.getDataChunk(), content.getDataLength());

一方、std :: string * C = new std :: string [K]、i<K。

char* p = content.getDataChunk(); 
        int l = content.getDataLength();
        for (int j = 0; j < l; j++) {
            C[i].insert(j, p[j], 1);
        }

(これにより、最初に例外が発生します-NULL値が原因だと思います!?)

明らかに、strcpy()は、再びNULLで終了する宛先としてchar *を使用するため、機能しません...

これを解決する方法について誰かが考えを持っていますか?私は日常的に尋ねられていることを尋ねているのではないことを願っていますが、膨大な量の回答の中で、チャンスを排除することは非常に困難でした;)

あなたのヒントのどれでも大いに感謝されます-TIA!

乾杯、アレックス

4

1 に答える 1

5

どうして

C[i] = std::string(content.getDataChunk(), content.getDataLength());

文字が埋め込まれている場合でも、文字列全体をコピーして、正しい動作をし'\0'ます。

于 2013-03-20T13:43:49.913 に答える