2

埋め込み NULL 文字をサポートする C++ で文字列を使用できますか?

私の問題は次のとおりです。NULLが埋め込まれた文字列を構築しているため、それをバイト配列としてC++ DLLに送信しました。

    string inputStr("he\0llo", 6);
    int byteLength = 6;
    BYTE *inputByte = (BYTE*)(char*)inputStr.c_str();
    ApplyArabicMapping(inputByte , byteLength);
4

2 に答える 2

2

はい、終了していないため、文字のstd::string格納をサポートしています。さまざまな方法で作成できます。NULLNULL

string str("he\0llo", 6);
str.append(1, '\0');
str.push_back('\0');
const char[] cstr = "hell\0o";
string str2(cstr, cstr + sizeof(cstr) - 1); // - 1 for the NULL
于 2012-04-04T11:14:20.577 に答える
2

カウントされた文字列を使用できます。この場合、文字バッファーは「コンテンツの長さ」と共に保存されます。これにより、任意の文字を埋め込むことができます。std::stringたとえば、 はカウントされた文字列の一種です。

明らかに、従来の C 文字列を期待する関数にそのような文字列を渡すことはできません。最初に遭遇した null が文字列ターミネータとして認識されるからです。

于 2012-04-04T11:14:26.340 に答える