LoginSignup
1
0

C++ 文字列操作について

Posted at

はじめに

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
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0