C++
 Computer >> コンピューター >  >> プログラミング >> C++

C/C++におけるヌル終端文字列とは?仕組みと挙動を解説

ヌル終端文字列とは

C言語では、文字列は基本的に「文字の配列」として表現されます。C++のstd::stringは、その文字配列をより扱いやすく発展させたクラスであり、従来の文字配列にはない便利な機能が数多く追加されています。

ヌル終端文字列(null terminated string)とは、文字の並びの最後にヌル文字「\0」を1つ置いた文字列のことです。ソースコード内でダブルクォート("...")を使って文字列を記述すると、コンパイラによって自動的にヌル終端文字列として扱われます。

ヌル文字があると文字列はそこで終わる

文字列の実際の長さは、配列全体のサイズよりも短くなることがあります。そして重要なのは、配列の途中にヌル文字が含まれていた場合、そこが文字列の終端として認識されるという点です。ヌル文字以降のデータは、文字列としては無視されます。

サンプルコード

以下の例では、まずstd::stringを使って文字列を定義し、その後、同じ文字列の途中に\0を1つ埋め込んだ文字列を代入しています。

#include<iostream>
using namespace std;
main() {
    string my_string = "This is a sample text";
    cout << my_string << endl;
    my_string = "This is a sam\0ple text"; // \0 の動作を確認
    cout << my_string;
}

実行結果

This is a sample text
This is a sam

結果の解説

2つ目の出力では「This is a sam」までしか表示されていません。これは、文字列リテラル中の\0が文字列の終端とみなされ、それ以降の「ple text」が切り捨てられたためです。

このように、C言語由来の文字列リテラルや文字配列を扱う際には、ヌル文字の位置に注意が必要です。意図しない場所に\0が含まれていると、文字列が途中で切れてしまい、思わぬバグの原因となります。

  1. LinuxでのC/C++開発におすすめのIDE 6選|特徴と選び方を解説

    テキストエディタだけでは大規模開発は難しい大規模なプロジェクトを単なるテキストエディタだけで管理するのは容易ではありません。そうしたケースでは、IDE(統合開発環境)を活用することで生産性が向上し、ストレスも大幅に軽減されます。IDEにはさまざまな種類があるため、自分のニーズに合ったものを選ぶことが重要です。この記事では、Linuxで利用できるC/C++向けの優れたIDEを6つご紹介します。1. NetBeans(C/C++開発向け)NetBeansは、無料かつオープンソースの人気クロスプラットフォームIDEです。C/C++をはじめ、多くのプログラミング言語に対応しており、コミュニティが開発し

  2. Windowsで使えるC++開発向けおすすめIDE 7選

    ```html 大規模なプロジェクトをプレーンなテキストエディターだけで管理するのは困難です。こうしたケースではIDE(統合開発環境)を使った方が、生産性が向上しストレスも大幅に軽減されます。IDEにはさまざまな種類があり、自分のニーズに合ったものを選ぶことが重要です。ここでは、Windowsで利用できる優れたC/C++向けIDEをご紹介します。 1. Visual Studio Microsoftが開発した定番IDEです。Windows上でのC++プログラムの構築・開発・プロファイリングにおいて、最高クラスのツール群を備えています。豊富なプラグインストアも魅力で、Azure、PowerShe