C++の基礎: 文字列の使い方を学ぶ
概要
Cプログラミング言語では、ASCIIコードはASCIIモードのテキストを格納するためのchar配列として使用されます。char配列はCとC++の両方で使用でき、操作が高速で、メモリ使用量も少なくて済みます。現代では、文字列がテキストの保存に便利で、文字列(string)ライブラリで定義されています。stringクラスは、char配列で使用したように二重引用符で囲まれた文字の集まりです。
string変数は、以下のように割り当てることができます。
string str = "This is a string example";
以下のコードは、文字列を画面に出力する例です。
#include <iostream>
#include <string>
int main(int argc, char** argv)
{
std::string str = "This is a string example";
std::cout << str;
return 0;
}
プログラムを実行すると、以下のように出力されます。
This is a string example
文字列の読み込みと変更
stringはchar配列のように使用でき、[ ]括弧とインデックス番号を使用して各文字にアクセスすることができます。以下のコード例をご覧ください。
#include <iostream>
#include <string>
int main(int argc, char** argv)
{
std::string str = "This is a string example";
std::cout << str[1];
return 0;
}
また、名前空間としてstdを使用(using namespace std; を定義)することで、以下のコードのようにstringの前にstd::を定義する必要はありません。
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char** argv)
{
string str = "This is a string example";
cout << str[1];
return 0;
}
プログラムを実行すると、以下のように2文字目が出力されます。
h
CやC++のインデックス番号は0から始まり、str[0]は'T'文字であることに注意してください。文字列の文字を変更するコード例は、以下の通りです。
std::string str = "This is a string example";
str[1]='X';
文字列の連結
char配列の場合はstrcat()、strcpy()などの関数を使用しますが、文字列の場合はもっと簡単な方法で操作可能です。
std::string name = "Jim";
std::string surname = "White";
std::string nameandsurname = name+" "+surname;
stringは多くの機能を備えたクラスであるため、モダンなC++では、このクラスの使用が推奨されています。 例えば、文字列のappend()関数を使って、別の文字列を追加することができます。
std::string str1 = "ABCD";
std::string str2 = "EFGH";
std::string str = str1.append(str2);
これは、以下のコードと同じです。
std::string str = str1 + str2;
文字列の長さ
文字列の長さ(文字数)は、以下のコード例のようにstringのlength(メソッドを使用して取得できます。
string str = "ABCDEF";
cout << "The length of string =" << str.length();
文字列のサイズ
文字列のサイズは、メモリ内の文字列の大きさで、コンパイラのオプションで文字が1バイトの場合は長さと同じになり、文字が2バイトの場合は長さの2倍のサイズになります。
string str = "ABCDEF";
cout << "The size of string =" << str.size();
C++Builderでは、stringとStringは同じ意味で使用されていることに注意してください。C++Builder 2009以降のバージョンでは、StringのデフォルトはUnicodeStringになっています。UnicodeStringについては「C++の基礎: WindowsでのUnicodeStringの使い方を学ぶ」を参照ください。