通信用語の基礎知識 全国のICカードこれひとつ 戻る

通常PC用 / 人気 更新 今日 カテ
電子計算機 > 仕様・構造 > ソフトウェア > プログラミング言語 > 言語仕様 > 予約語・関数など
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() {

using namespace std;

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つの文字列を交換する
リンク
用語の所属
C++
標準C++ライブラリ
std
関連する用語
STL
クラス

[再検索] [戻る]


通信用語の基礎知識検索システム WDIC Explorer Ver 7.04 (07-Mar-2021)
Search System : Copyright © Mirai corporation
Dictionary : Copyright © WDIC Creators club
KisoDic