Null が埋め込まれた文字列リテラルから std::string を構築する場合「std::string my_string("a\0b");」などの文字の場合、結果には最初の文字のみが存在する可能性があります。 弦。この課題に対処するために、使用されている C バージョンに応じてさまざまなアプローチを採用できます。
C 14 以降では、文字列リテラルは、埋め込まれた null を含む文字を表現できるようになりました。 。文字列リテラルにサフィックス「s」を追加すると、C 文字列リテラルではなく std::string リテラルとして扱うことができます。例:
std::string s = "pl-<pre class="brush:php;toolbar:false">std::string x("pq\0rs"); // Two characters because input assumed to be C-String std::string x("pq\0rs",5); // 5 Characters as the input is a char array with 5 characters.-op"s; // Notice the "s" at the end.
C 14 より前では、char* を受け取る std::string コンストラクターは入力が C 文字列であると想定していました。 null で終了する。これを補うには、char 配列とその長さを受け入れる別のコンストラクターを使用する必要があります。
C の std::string は、C 文字列とは異なり、null で終了していないことに注意することが重要です。ただし、c_str() メソッドは、null で終了する C 文字列表現を含む内部バッファへのポインタを提供できます。
以上がC で埋め込み Null 文字を含む `std::string` を作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。