ホームページ > バックエンド開発 > C++ > `std::string` には Null ターミネータが含まれていますか?

`std::string` には Null ターミネータが含まれていますか?

Susan Sarandon
リリース: 2024-12-07 21:07:17
オリジナル
963 人が閲覧しました

Does `std::string` Contain a Null Terminator?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート