std::string には組み込みの Null ターミネータがありますか?
一般に信じられていることに反して、std::string には本質的にヌル ターミネータはありません。 null 終端文字「 」を持ちます。この動作は、文字列の終了を示す null 文字を自動的に追加する文字配列とは異なります。
ただし、このルールには重大な例外があります。それは temp.c_str() メソッドです。このメソッドを呼び出すと、返される文字列には null 終端文字が含まれます。これにより、従来の C スタイルの文字列と互換性のある方法で文字列を処理および処理できるようになります。
さらに、次のように std::string 内に null 文字を明示的に含めることができることに注意することが重要です。他の文字。文字列内の文字位置に ' ' を割り当てると、文字列を効果的に 2 つの部分文字列に分割できます。
たとえば、次のコード スニペットを考えてみましょう。
string s("hello"); cout << s.size() << ' '; s[1] = '<pre class="brush:php;toolbar:false">5 5'; cout << s.size() << '\n';
この出力コードは次のようになります:
これは、null 文字が文字列の認識されるサイズに影響を与えないことを示しています。その理由は、null 文字は std::strings のコンテキストでは特別な意味を持たないためです。
以上が`std::string` には Null ターミネータが含まれていますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。