Top / Programming / C++Builder / AnsiStringとstd::stringの比較(C++Builder2007以前)

AnsiStringとstd::stringの比較(C++Builder2007以前)

文字列の比較

大文字と小文字を区別するとき

AnsiStringではAnsiCompare()を使用します。

AnsiString s = "abc";
s.AnsiCompare("ABC");

std::stringではcompare()を使用します。

std::string s = "abc";
s.compare("ABC");

大文字と小文字を区別しないとき

AnsiStringではAnsiCompareIC()を使用します。

AnsiString s = "abc";
s.AnsiCompareIC("ABC");

std::stringでは、stricmp()関数を使用します。

std::string s = "abc";
stricmp(s.c_str(), "ABC");

NULLで終わる文字配列に変換する

AnsiStringとstd::stringともに、c_str()を使用します。

AnsiString s = "abc";
s.c_str();

std::string s = "abc";
s.c_str();

長さを取得する

AnsiStringではLength()を使用します。

AnsiString s = "abc";
s.Length();

std::stringではsize()を使用します。

std::string s = "abc";
s.size();

空の場合にtrueを返す

AnsiStringではIsEmpty()を使用します。

AnsiString s = "abc";
s.IsEmpty(); //=> false

std::stringではempty()を使用します。

std::string s = "abc";
s.empty(); //=> false

文字列の挿入

AnsiStringではInsert()を使用します。

AnsiString s = "abc";
s.Insert("ABC", 2); //=> aABCbc

AnsiString s = "あいう";
s.Insert("アイウ", 3); # => あアイウいう

std::stringではinsert()を使用します。

std::string s = "abc";
 s.insert(2, "ABC"); //=> abABCc

std::string s = "あいう";
s.insert(2, "アイウ"); //=> あアイウいう

引数の開始位置はどちらもバイト数。
AnsiStringは開始位置は1から始まる。std::stringは0から。

文字列の削除

AnsiStringではDelete()を使用します。

AnsiString s = "abcde";
s.Delete(2, 2); //=> ade

AnsiString s = "あいうえお";
s.Delete(3, 2); //=> あうえお

std::stringではerase()を使用します。

std::string s = "abcde";
s.erase(2, 2); //=> abe

std::string s = "あいうえお";
s.erase(2, 2); //=> あうえお

引数の開始位置と文字数はどちらもバイト数。
AnsiStringは開始位置は1から始まる。std::stringは0から。

指定された部分文字列の開始位置のインデックスを取得する

AnsiStringではAnsiPos()を使用します。

部分文字列の先頭のインデックス(バイト数)を返します。
部分文字列が含まれていない場合は0を返します。

AnsiString s = "abcde";
s.AnsiPos("bc"); //=> 2
s.AnsiPos("fg"); //=> 0

AnsiString s = "あいうえお";
s.AnsiPos("いう"); //=> 3
s.AnsiPos("かき"); //=> 0

std::stringではfind()を使用します。

部分文字列の先頭のインデックスを返します。
部分文字列が含まれていない場合はstd::string::nposを返します。

std::string s = "abcde";
s.find("bc"); //=> 1
s.find("fg"); //=> std::string::npos

std::string s = "あいうえお";
s.find("いう"); //=> 2
s.find("かき"); //=> std::string::npos

std::wstring s = L"あいうえお";
s.find(L"いう"); //=> 1
s.find(L"かき"); //=> std::string::npos

文字列の一部を新しい文字列として取得する

AnsiStringではSubString()を使用します。

AnsiString s = "abcde";
s.SubString(2, 2); //=> bc

AnsiString s = "あいうえお";
s.SubString(3, 2); //=> い

std::stringではsubstr()を使用します。

std::string s = "abcde";
s.substr(2, 2); //=> cd

std::string s = "あいうえお";
s.substr(2, 2); //=> い

文字の長さを変更する

小文字に変換する

大文字に変換する

AnsiStringではUpperCase()を使用します。

AnsiString result = S.UpperCase();

同名の関数も用意されています。

AnsiString result = UpperCase(S);

std::stringではtransformとtoupperを使用します。

std::string result;
std::transform(S.begin(), S.end(), std::back_inserter(result), toupper);