C++:
文字列の長さを求める
How to: (方法)
#include <iostream>
#include <string>
int main() {
std::string myString = "こんにちは世界";
std::cout << "The length of the string is: " << myString.length() << std::endl;
// C++11以降、以下のようにも書けます
std::cout << "The length of the string is: " << myString.size() << std::endl;
return 0;
}
出力:
The length of the string is: 21
The length of the string is: 21
Deep Dive (詳細な解説)
文字列の長さを知る機能は、C++の初期から存在します。C言語ではstrlen
関数が使われていましたが、C++ではstd::string
クラスで.length()
や.size()
メソッドが提供されています。これらのメソッドは、同じ結果を返しますが、適用する文脈によって使い分けることが推奨されます(.length()
は文字列の長さが、.size()
はコンテナの大きさが焦点の時に使います)。
内部的には、std::string
は文字の配列を管理しつつ、長さの情報を追跡することで高速に長さを報告します。これは計算の必要がなく、効率的です。
他にも、C++スタイルではstd::string
を使いますが、Cスタイルの文字列(NULLで終了する文字配列)でも長さはstrlen
関数で取得可能です。しかし、安全性や使い勝手でstd::string
が推奨されます。