ホームページ >バックエンド開発 >C++ >C で埋め込み Null 文字を含む `std::string` を作成するにはどうすればよいですか?

C で埋め込み Null 文字を含む `std::string` を作成するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-29 08:06:10777ブラウズ

How Can I Create a `std::string` Containing Embedded Null Characters in C  ?

Null が埋め込まれた std::string の作成: 詳細な検査

Null が埋め込まれた文字列リテラルから std::string を構築する場合「std::string my_string("a\0b");」などの文字の場合、結果には最初の文字のみが存在する可能性があります。 弦。この課題に対処するために、使用されている C バージョンに応じてさまざまなアプローチを採用できます。

C 14 以降

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 より前のソリューション

C 14 より前では、char* を受け取る std::string コンストラクターは入力が C 文字列であると想定していました。 null で終了する。これを補うには、char 配列とその長さを受け入れる別のコンストラクターを使用する必要があります。

C の std::string は、C 文字列とは異なり、null で終了していないことに注意することが重要です。ただし、c_str() メソッドは、null で終了する C 文字列表現を含む内部バッファへのポインタを提供できます。

以上がC で埋め込み Null 文字を含む `std::string` を作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。