文字列に含まれている数字を抜き取り、それをint型として利用したいという場合がある。
その際には、substr関数とstoi関数を利用すると良さそう。
私は毎回調べてしまい、時間がかかる。
特にsubstrメソッドの引数を忘れやすい。
ここにまとめておく。
例を見た方が早いので例を示す。
#include
using namespace std;
int main(void){
string s = "abcdefghi"; // sに適当な文字列を代入
cout << s.substr(2, 3) << endl; // 出力 "cde"
return 0;
}
簡単に言葉でもまとめておく。
substrメソッドの引数
s.substr(2, 3)とすると, sの2番目から3要素抜き出した文字列を取得
s.substr(2, 3)とすると, sの2番目から3要素抜き出した文字列を取得
下記のような時間の入力があった時に時間と分を取得する方法を紹介する。
入力例
13:45
C++でのコード
#include
using namespace std;
int main(void){
string s;
cin >> s; // 13:45をstring型でまず受け取る
int n = 0; // nには、何番目に「:」が来るのかを代入する
for (int i = 0; i < s.size(); i++) {
if (s[i] == ':') {
n = i;
break;
}
}
int x = 0, y = 0; // xには時間、yには分を代入する
x = stoi(s.substr(0, n)); // sの0番目からn要素取り出す
y = stoi(s.substr(n + 1, s.size())); // sのn+1番目から、s.size()要素取り出す
cout << x << endl;
cout << y << endl;
return 0;
}
出力結果
13
45
コメント