【C++入門】文字列の長さを取得する5つの方法を徹底解説
C++では、文字列の長さを取得するために複数の方法が用意されています。C++では従来の文字配列(C言語形式の文字列)を扱うこともできますし、標準ライブラリの std::string クラスを利用することも可能です。それぞれの場面に応じて、適切な手法を選ぶことが重要です。
文字列の長さを取得する5つの方法
std::string クラスには length() 関数と size() 関数が用意されており、どちらもstring型オブジェクトの長さを取得できます。一方、C言語形式の文字列(char配列)の長さを求める場合は、<cstring> ヘッダーファイルに定義されている strlen() 関数を使用します。
さらに、ライブラリ関数に頼らず自前で実装する方法もあります。ひとつは while ループを使う方法、もうひとつは for ループを使う方法です。いずれも、文字列の終端を示すヌル文字('\0')に到達するまで1文字ずつカウントしていくシンプルなアプローチです。
それでは、実際のコード例を見てみましょう。
サンプルコード
#include<iostream>
#include<cstring>
using namespace std;
int main() {
string myStr = "This is a sample string";
char myStrChar[] = "This is a sample string";
// 方法1:length() 関数を使用
cout << "length()を使用した文字列の長さ: " << myStr.length() << endl;
// 方法2:size() 関数を使用
cout << "size()を使用した文字列の長さ: " << myStr.size() << endl;
// 方法3:strlen() 関数を使用(C言語形式の文字列)
cout << "strlen()を使用した文字列の長さ: " << strlen(myStrChar) << endl;
// 方法4:while ループを使用
cout << "whileループを使用した文字列の長さ: ";
char *ch = myStrChar;
int count = 0;
while(*ch != '\0'){
count++;
ch++;
}
cout << count << endl;
// 方法5:for ループを使用
cout << "forループを使用した文字列の長さ: ";
count = 0;
for(int i = 0; myStrChar[i] != '\0'; i++){
count++;
}
cout << count;
}
実行結果
length()を使用した文字列の長さ: 23 size()を使用した文字列の長さ: 23 strlen()を使用した文字列の長さ: 23 whileループを使用した文字列の長さ: 23 forループを使用した文字列の長さ: 23
まとめ
このように、C++では状況に応じてさまざまな方法で文字列の長さを取得できます。std::string を扱う場合は length() または size() を使うのが最も安全で簡潔です。C言語形式の文字列であれば strlen() が便利ですが、ループ処理を自分で実装することで、文字列がメモリ上でどのように管理されているのかへの理解も深まります。今回の例では、すべての方法で同じ結果(23文字)が得られることを確認できました。
-
C++で文字列から最も長い偶数長の単語を検索する方法
問題の概要 この問題では、スペースで区切られた複数の単語を含む文字列 str が与えられます。私たちのタスクは、文字列の中から最初に見つかる、最も長い偶数長の単語を検索することです。 言い換えると、長さが最大で、かつ文字数が偶数になっている単語(スペースとスペースの間にある文字列)を抜き出す必要があります。 具体例で問題を確認してみましょう。 Input : str = "learn programming at TutorialsPoint" Output : TutorialsPoint 説明 − 偶数の長さを持つ単語は「TutorialsPoint」です。 解決アプロ
-
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 の部分文字列の個数を順に加算していく必要があります。部分文