これは、私がこれまで得意ではなかったC /C++の1つの領域です。
私の問題は、最終的にいくつかのヌル文字を含める必要がある文字列があることです。すべてをchar配列(または文字列)として扱うことは機能しません。最初のnullを見つけると物事が崩れる傾向があるためです。だから私は、わかりました、uint8_tに切り替えると思ったので、すべてが単なる数字です。必要に応じて物を動かし、準備ができたらcharにキャストして戻すことができます。
今の私の主な質問は、文字列の一部をuint8_tバッファにコピーするにはどうすればよいですか?
効果的に、私は次のようなことをしたいと思います:
std::string s = "abcdefghi";
uint8_t *val = (uint8_t*)malloc(s.length() + 1);
memset(val, 0, s.length() + 1);
// Assume offset is just some number
memcpy(val + offset, s.substr(1, 5).c_str(), 5);
明らかに、これを試してみるとエラーが発生します。memcpyの最初の引数で実行できるある種のトリックがおそらくあります(オンラインで(*(uint8_t *))のようなものが表示され、それが何を意味するのかわかりません)。
何をすべきかについて何か助けはありますか?
そして、私がここにいる間、どうすればこれをchar配列に簡単にキャストバックできますか?uint8_tポインタをcharポインタにstatic_castするだけですか?
どうもありがとう。