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

C++で文字列の長さを求める5つの方法【サンプルコード付き】


文字列とその長さとは

文字の並び、あるいは文字型の線形配列のことを「文字列」と呼びます。宣言方法は他の配列を定義する場合と同じです。

文字列の長さとは、その文字列に含まれる文字数のことです。文字列の長さを求めるには、標準ライブラリが提供する組み込みメソッドを利用する方法と、ループ処理で自前でカウントする方法があります。ここでは、C++で文字列の長さを求める5つの異なる方法を、サンプルコード付きでわかりやすく解説します。

1. strlen() 関数を使う方法(C言語スタイル)

strlen() はC言語の標準ライブラリ関数で、引数として渡された文字列の長さを整数値で返します。この関数を使用する場合は、文字列をchar型の文字配列として渡す必要があります。ヘッダー <cstring> のインクルードが必要です。

strlen() を使用したプログラム

#include <iostream>
#include <cstring>
using namespace std;
int main() {
    char charr[] = "I Love Tutorialspoint";
    int length = strlen(charr);
    cout << "the length of the character array is " << length;
    return 0;
}

出力結果

the length of the character array is 21

2. size() メソッドを使う方法(C++)

size() はC++のstringクラスに用意されているメソッドで、文字列に含まれる文字数を整数値として返します。<string> ヘッダーをインクルードすることで利用できます。

size() を使用したプログラム

#include <iostream>
#include <string>
using namespace std;
int main() {
    string str = "I love tutorialspoint";
    int length = str.size();
    cout << "the length of the string is " << length;
    return 0;
}

出力結果

The length of the string is 21

3. forループを使う方法

この方法では特別な関数を必要としません。forループで配列の各要素を順番にたどり、文字数を数えます。ループは終端を示すヌル文字「\0」に到達するまで繰り返されます。

forループで長さを求めるプログラム

#include <iostream>
#include <string>
using namespace std;
int main() {
    string str = "I love tutorialspoint";
    int i;
    for(i=0; str[i]!='\0'; i++){ }
    cout << "the length of the string is " << i;
    return 0;
}

出力結果

The length of the string is 21

4. length() メソッドを使う方法

C++のstringライブラリにはlength()というメソッドも用意されており、文字列に含まれる文字数を返します。<string> ヘッダーのインクルードが必要です。なお、size()とlength()は機能的にまったく同じであり、どちらを使っても結果は変わりません。

length() を使用したプログラム

#include <iostream>
#include <string>
using namespace std;
int main() {
    string str = "I love tutorialspoint";
    int length = str.length();
    cout << "the length of the string is " << length;
    return 0;
}

出力結果

The length of the string is 21

5. whileループを使う方法

whileループを使っても文字列の文字数をカウントできます。カウンター変数を用意し、終了条件として文字列の終端「\0」ではない(!= '\0')ことを指定しながら、1文字ずつ数えていく方法です。

whileループで長さを求めるプログラム

#include <iostream>
#include <string>
using namespace std;
int main() {
    string str = "I love tutorialspoint";
    int length = 0;
    while(str[length] !='\0' ){
        length++;
    }
    cout<<"The length of the string is "<< length;
    return 0;
}

出力結果

The length of the string is 21

まとめ

C++で文字列の長さを求める方法としては、strlen()・size()・length()といった組み込み関数を使う方法と、forループやwhileループで自前でカウントする方法があります。std::stringを扱う場合はsize()またはlength()が最もシンプルで推奨され、char型配列を扱う場合はstrlen()が便利です。用途に応じて適切な方法を選択しましょう。

  1. C++で文字列の部分文字列の総数を求める方法を解説

    この記事では、与えられた文字列から作成できる空でない部分文字列の個数を求める方法について解説します。入力 : string = "moon" 出力 : 10 説明 : 部分文字列は m、o、o、n、mo、oo、on、moo、oon、moon の 10 個です。 入力 : string = "yellow" 出力 : 21解法のアプローチ文字列の長さを n とします。上の例からも分かるように、考えられるすべての部分文字列の個数を求めるには、長さ n、(n-1)、(n-2)、(n-3)、……2、1 の部分文字列の個数を順に加算していく必要があります。部分文

  2. C++でN番目の偶数長回文数を求める方法をわかりやすく解説

    C++を使ったことがある人なら、「回文(パリンドローム)」という言葉を耳にしたことがあるでしょう。この記事では、「N番目の偶数長回文数」について、具体例を交えながらすべて解説します。 回文とは、逆から読んでも元と同じになる数字や単語のことです。数字だけでなく、文字を反転してもつづりが変わらない単語も回文と呼ばれます。例えば以下の通りです。 数字 = {1, 121, 131, 656, 1221, 1551} 単語 = {saas, malayalam, level, mom} 一見複雑に見えますが、実際にプログラムで実装すると非常にシンプルです。それでは、回文について詳しく見ていきましょう。