std::string |
辞書:電算用語の基礎知識 プログラミング仕様編 (PTPROGS) |
読み:エスティーディー-ストリング |
外語:std::string |
品詞:名詞 |
標準C++ライブラリに含まれる、文字列を扱うためのクラス。STLではないが、STLと完全な互換性がある。
|
概要 |
Cには、文字列を文字列として扱う機能が無い。
C++も同様で、やはり文字列を文字列として扱う機能は持っていないが、必要な機能はクラスとして実装され、標準ライブラリとして提供されている。
書式 |
#include <string>
特徴 |
テンプレートクラス |
stringはクラスだが、その正体はテンプレートクラスbasic_stringである。1文字を1要素として扱う、コンテナーとして機能する。
template <class charT, class traits = char_traits<charT>, class Allocator = allocator<charT> > class basic_string;
typedef basic_string<char> string;
typedef basic_string<wchar_t> wstring;
stringはchar型だが、同様にUnicode文字wchar_t型を扱うstd::wstringがある。またC++11からは、char16_t型およびchar32_t型のものも追加された。
typedef basic_string<char16_t> u16string;
typedef basic_string<char32_t> u32string;
わかりやすく言えば、例えばstd::stringはstd::basic_string<char>の別名ということである。
内部処理 |
stringは、上述の通りbasic_stringクラスのtypedefである。
クラスである以上はC++の機能で実装されているので、内部的には従来通りchar型で動作する(std::stringの場合)。
しかしインスタンス化したクラスの実体は、あたかも文字列型の変数のように扱うことができる。
これはC++の機能を上手く使って実現されており、例えば代入は=演算子で行なうが、この演算子はオーバーロードで実現されているのである。
利用方法 |
例えば、簡単な使い方は次のようになる。
#include <string>
#include <iostream>
int main() {
string str;
str = "abc";
str += "def"
cout << str << endl;
return 0;
}
strにabcを代入し、その後末尾にdefを連結し、標準出力に結果を出力する。
仕様 |
コンストラクター |
文法は次の通り。
string();
string(size_type size, char chr);
string(const char *str);
string(const char *str, size_type size);
string(string &str, size_type index, size_type size);
string(input_iterator start, input_iterator end);
上から順に、次のように文字列は作られる。
演算子 |
文法は次の通り。
s1 == s2
s1 > s2
s1 < s2
s1 >= s2
s1 <= s2
s1 != s2
s1 + s2
s1 += s2
s[]
各文字列は、比較演算子によって比較できる。
各文字列は、+演算子および+=演算子によって結合することができる。
[]演算子によって、特定の位置の文字を参照することができる。
メソッド |
append() | 文字列の後ろに他の文字列を連結する |
assign() | 文字列にテクストを割り当てる |
at() | 指定されたインデックスの文字を返す |
begin() | 最初の文字を示すイテレーターを返す |
c_str() | C言語形式の文字配列(ASCIIZ)を返す |
capacity() | 文字列が格納できる文字数を返す |
compare() | 2つの文字列を比較する |
copy() | 文字列の中に文字列をコピーする |
data() | 最初の文字へのポインタを返す |
empty() | 文字列が空ならtrueを返す |
end() | 文字列の最後を指すイテレーターを返す |
erase() | 文字列の一部分を削除する |
find() | 文字列を検索する |
find_first_of() | 文字列を検索し、最初の要素のインデックスを返す |
find_first_not_of() | 文字列を検索し、最初の要素でないインデックスを返す |
find_last_of() | 文字を検索し、一番最後の要素のインデックスを返す |
find_last_not_of() | 文字を検索し、一番最後の要素でないインデックスを返す |
get_allocator() | 文字列のアロケーターを返す |
insert() | 文字列の中に他の文字列を挿入する |
length() | 文字列の長さを返す |
max_size() | 文字列が保持することができる最大の長さを返す |
rbegin() | 文字列の最後を示すリバースイテレーターを返す |
rend() | 文字列の最初を示すリバースイテレーターを返す |
replace() | 文字列の中の文字を置換する |
reserve() | 文字を格納する容量を確保する |
resize() | 文字列の大きさを変更する |
rfind() | 文字列を検索し、最後の要素のインデックスを返す |
size() | 文字列の文字数を返す |
substr() | 文字列の一部切り出した文字列を返す |
swap() | 2つの文字列を交換する |
リンク |
通信用語の基礎知識検索システム WDIC Explorer Ver 7.04a (27-May-2022) Search System : Copyright © Mirai corporation Dictionary : Copyright © WDIC Creators club |