はじめに
C++で文字列操作をする時にすぐわからなくなってしまうので、備忘録として残しておきます。
文字列のサイズを取得
size() を利用
string s1 = "testcode";
string s2 = "テストコード";
string s3 = "";
// 文字列の長さを出力
cout << "文字列の長さ:" << s1.size() << "\n";
cout << "文字列の長さ:" << s2.size() << "\n";
cout << "文字列の長さ:" << s3.size() << "\n";
結果
文字列の長さ:8
文字列の長さ:18
文字列の長さ:0
n番目の文字を取得
取得したい部分のインデックスを指定
string s1 = "testcode";
// n番目の文字を取得
cout << "1番目の文字:" << s1[1] << "\n";
cout << "3番目の文字:" << s1[3] << "\n";
cout << "6番目の文字;" << s1[6] << "\n";
結果
1番目の文字:e
3番目の文字:t
6番目の文字;d
n番目以降の文字列をi文字分取得
substr(n, i) を利用
string s1 = "testcode";
// n番目以降の文字列をi文字分取得
cout << "0番目以降の文字列を3文字:" << s1.substr(2, 3) << "\n";
cout << "5番目以降の文字列を3文字:" << s1.substr(5, 3) << "\n";
cout << "2番目以降の文字列:" << s1.substr(2) << "\n";
結果
2番目以降の文字列を3文字:stc
5番目以降の文字列を3文字:ode
2番目以降の文字列:stcode
文字列の挿入
insert(n, "文字列") を利用。n番目に"文字列"を挿入。
// 文字列の挿入
cout << "文字列の挿入:" << s2.insert(9, "対策") << "\n";
結果
文字列の挿入:テスト対策コード
文字列の結合
文字列同士を + で足せばよい
// 文字列の挿入
cout << "文字列の挿入:" << s2.insert(9, "対策") << "\n";
結果
文字列結合:テスト対策コードの演習
末尾に文字を挿入
push_back() を利用
// 末尾に文字を挿入
s2.push_back('A');
cout << "末尾に文字を挿入後:" << s2 << endl;
結果
末尾に文字を挿入後:テスト対策コードA
n文字目以降の文字列をi文字分削除
erase(n, i) を利用
string s1 = "testcode";
// n文字目以降の文字をi文字分削除
cout << "0番目以降の文字列を3文字削除:" << s1.erase(2, 3) << "\n";
cout << "5番目以降の文字列を3文字削除:" << s1.erase(5, 3) << "\n";
cout << "2番目以降の文字列削除:" << s1.erase(2) << "\n";
結果
0番目以降の文字列を3文字削除:teode
5番目以降の文字列を3文字削除:teode
2番目以降の文字列削除:te
末尾の文字を削除
pop_back() を利用する
string s = "test";
// 末尾の文字を削除
s.pop_back();
cout << "末尾の文字を削除後:" << s << endl;
結果
末尾の文字を削除後:tes
文字の検索
find() を利用する
// 文字の検索
cout << "tという文字を検索:" << s1.find('e') << endl;
cout << "aという文字を検索:" << s1.find('a') << endl;
結果
tという文字を検索:1
aという文字を検索:18446744073709551615
文字が見つからない場合は、上記のような大きな数字が返却される。
文字列を数値へ変換
stoi() を利用する。
// 文字の変換
string sNum = "123";
int i = stoi(sNum) + 1;
cout << "文字列を数値に変換:" << i << endl;
結果
文字列を数値に変換:124
文字列「123」を数値に変換し、1を足している。結果、123 + 1 = 124となったため、string型からint型へ変換されて、正しく計算が行われた。
ちなみに、int型からstring型の変換は下記のように行う。
// int型からstring型への変換
int n = 100;
string s5 = to_string(n);
cout << "数値を文字列に変換:" << s5 + "123" << endl;
結果
数値を文字列に変換:100123
文字列同士を結合させることができたので、int型からstring型へ変換されていることが分かる。
文字列の置換
replace(i, n, "文字列"); でi番目からn個を"文字列"で置換することができる。
// 文字列の置換
s5 = "testcode";
cout << "置換前:" << s5 << endl;
s5 = s5.replace(4, 1, "C");
cout << "置換前:" << s5 << endl;
結果
置換前:testcode
置換前:testCode
文字列を判定
// 文字列の比較
if (s5 == "testCode") {
cout << "「testCode」" << endl;
} else {
cout << "「testcode」" << endl;
}
// 文字を判定
if (s5[1] == 'e') {
cout << "2番目の文字はe" << endl;
}
結果
「testCode」
2番目の文字はe