C++ で文字列の長さを求める
-
C++ で
length
関数を使用して文字列の長さを検索する -
C++ で
size
関数を使用して文字列の長さを検索する -
C++ で
while
ループを使用して文字列の長さを検索する -
C++ で
std::strlen
関数を使用して文字列の長さを検索する
この記事では、C++ で文字列の長さを求める方法のいくつかの方法について説明します。
C++ で length
関数を使用して文字列の長さを検索する
C++ 標準ライブラリは、std::basic_string
クラスを提供して、char
のようなシーケンスを拡張し、そのようなデータを格納および操作するための汎用構造を実装します。ただし、ほとんどの人は、それ自体が std::basic_string<char>
の型エイリアスである std::string
型に精通しています。std::string
は、保存された char
シーケンスの長さを取得するための length
組み込み関数を提供します。
#include <cstring>
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main(int argc, char *argv[]) {
string str1 = "this is random string oiwaoj";
cout << "string: " << str1 << endl;
cout << "length: " << str1.length() << endl;
exit(EXIT_SUCCESS);
}
出力:
string: this is random string oiwaoj
length: 28
C++ で size
関数を使用して文字列の長さを検索する
std::string
クラスに含まれるもう 1つの組み込み関数は、size
であり、前のメソッドと同様に動作します。引数をとらず、文字列オブジェクト内の char
要素の数を返します。
#include <cstring>
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main(int argc, char *argv[]) {
string str1 = "this is random string oiwaoj";
cout << "string: " << str1 << endl;
cout << "length: " << str1.size() << endl;
exit(EXIT_SUCCESS);
}
出力:
string: this is random string oiwaoj
length: 28
C++ で while
ループを使用して文字列の長さを検索する
あるいは、文字列の長さを計算するために独自の関数を実装することもできます。この場合、while
ループを利用して文字列を char
シーケンスとしてトラバースし、反復ごとに 1 ずつカウンターをインクリメントします。関数は引数として char
を取り、c_str
メソッドが呼び出されてメイン関数でこのポインターを取得することに注意してください。逆参照されたポインタ値が 0
に等しくなるとループが停止し、null で終了する文字列の実装がそれを保証します。
#include <cstring>
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
using std::string;
size_t lengthOfString(const char *s) {
size_t size = 0;
while (*s) {
size += 1;
s += 1;
}
return size;
}
int main(int argc, char *argv[]) {
string str1 = "this is random string oiwaoj";
cout << "string: " << str1 << endl;
cout << "length: " << lengthOfString(str1.c_str()) << endl;
exit(EXIT_SUCCESS);
}
出力:
string: this is random string oiwaoj
length: 28
C++ で std::strlen
関数を使用して文字列の長さを検索する
最後に、昔ながらの C 文字列ライブラリ関数 strlen
を使用できます。この関数は、カスタム定義関数 lengthOfString
として単一の const char*
引数を取ります。これらの最後の 2つのメソッドは、トラバーサル中に範囲外のメモリにアクセスする可能性があるため、ヌルバイトで終わらない char
シーケンスで呼び出されると障害が発生する可能性があります。
#include <cstring>
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main(int argc, char *argv[]) {
string str1 = "this is random string oiwaoj";
cout << "string: " << str1 << endl;
cout << "length: " << std::strlen(str1.c_str()) << endl;
exit(EXIT_SUCCESS);
}
出力:
string: this is random string oiwaoj
length: 28