ゲームが作れるようになるまでがんばる日記

ゲーム制作のことを中心にゲームに関することを書いています

stringのinsert,replace,erase

文字列を扱うstringのメンバ関数

insert(start, str);
insert(start, str, start2, num);

insert()は文字列を挿入する関数。上の形式はstartの位置にstrを挿入し、下の形式はstartの位置にstrのstart2の位置からnum文字を挿入する。

replace(start, num, str);
replace(start, num, str, start2, num2);

replace()は文字列を置換する関数。上の形式はstartの位置からnum文字をstrで置換する。下の形式はstartの位置からnum文字をstrのstart2の位置からnum2文字で置換する。

erase(start, num);

erase()は文字列を削除する関数。start位置からnum文字削除する。
実際に試してみたプログラムが次の通り。

#include <iostream>
#include <string>
using namespace std;

int main()
{
    string str1("This is a test.");
    string str2("12345");
    string str3("ABCDEF");

    // str1の6文字目にstr2を挿入
    str1.insert(5, str2);
    cout << str1 << endl;

    // str1の8文字目にstr2の4文字目から3文字を挿入
    str1.insert(7, str3, 3, 3);
    cout << str1 << endl;

    // str1の8文字目から3文字をstr2で置換
    str1.replace(7, 3, str2);
    cout << str1 << endl;

    // str1の8文字目から5文字をstr3の3文字目から3文字で置換
    str1.replace(7, 5, str3, 2, 3);
    cout << str1 << endl;

    // str1の6文字目から8文字消去
    str1.erase(5, 8);
    cout << str1 << endl;
}

実行結果
This 12345is a test.
This 12DEF345is a test.
This 1212345345is a test.
This 12CDE345is a test.
This is a test.

コメントのn文字目の値がメンバ関数の引数の値とずれているのは、文字列の場所を指定するインデックスが0から始まるため。