[M1 Mac, Big Sur 11.6.7, clang 13.0.0, NO IDE]
文字列内に英字があるかどうかの判定とその取り出しができる関数を作成しました。structデータを使いたかったので作ってみました。
Javaでもclassにてstructのようなデータの集合体を作ることができます。これまでJavaでは配列を作って関数の戻り値にしていましたが、データ型を揃える必要があり不便に思っていました。
#include <cppstd.h> // 自製c++標準ライブラリ群
struct Result{
bool judge;
string alphabet;
};
Result alphabetExtract(string str)
{
std::regex pattern("[a-zA-Z]+");
std::smatch sm;
if (std::regex_search(str, sm, pattern)){
string ch = sm.str();
struct Result res = {true, ch};
return res;
}else{
struct Result res = {false, ""};
return res;
}
}
int main()
{
setlocale(LC_CTYPE, "");
string test = "123ハローわぁるどHello";
struct Result res = alphabetExtract(test);
string alp = res.alphabet;
cout << "判定結果 " << res.judge << endl;
cout << "英字 " << alp.c_str() << endl;
}
--------------------------------------------------
出力
--------------------------------------------------
判定結果 1
英字 Hello