この記事は2019年10月03日に投稿しました。
目次
リンク
1. はじめに
こんにちは、iOSのエディタアプリPWEditorの開発者の二俣です。
今回は業務で使用しているC++のstd::stringで文字列を後尾から切り出す方法についてです。
2. C++のstd::stringで文字列を後尾から切り出す
C++のstd::stringで文字列を後尾から切り出す関数はありません。
そのため以下のような実装で行います。
実装例
#include "pch.h" #include <iostream> #include <string> /** * @brief 文字列を後尾から切り出します。 * * @param [in] str 元の文字列 * @param [in] pos 元の文字列の後尾からの切り出す開始位置(0起算) * @param [in] len 切り出す文字列の長さ * 省略した場合、切り出し開始位置から文字列の末尾まで切り出します。 * pos + 1 < lenの場合も、切り出し開始位置から文字列の末尾まで切り出します。 */ std::string rsubstr(std::string str, size_t pos, size_t len = std::string::npos) { // 元の文字列の長さを取得します。 const size_t strlen = str.length(); // 切り出す文字列の長さが省略された、または切り出し開始位置+1より長い場合 if ((std::string::npos == len) || ((pos + 1) < len)) { // 切り出す文字列の長さを文字列の末尾までに変更します。 len = pos + 1; } // 文字列を切り出します。 std::string dst = str.substr(strlen - pos - 1, len); return dst; } int main() { // 元の文字列 std::string str = "orange apple banana"; // "apple"を切り出します。 std::string dst = rsubstr(str, 11, 5); std::cout << "[" << dst << "]" << std::endl; // "apple banana"を切り出します。 dst = rsubstr(str, 11); std::cout << "[" << dst << "]" << std::endl; }
実行例
[apple] [apple banana]
API Reference
substr関数
3. おわりに
std::stringに文字列を後尾から切り出す関数は用意されていません。
そのため前回紹介した
を使用して、実装する必要があります。
リンク
紹介している一部の記事のコードはGitlabで公開しています。
興味のある方は覗いてみてください。
私が勤務しているニューラルでは、主に組み込み系ソフトの開発を行っております。
弊社製品のハイブリッドOS Bi-OSは高い技術力を評価されており、特に制御系や通信系を得意としています。
私自身はiOSモバイルアプリやウィンドウズアプリを得意としております。
ソフトウェア開発に関して相談などございましたら、お気軽にご連絡ください。
また一緒に働きたい技術者の方も随時募集中です。
興味がありましたらご連絡ください。
EMAIL : info-nr@newral.co.jp / m-futamata@newral.co.jp
TEL : 042-523-3663
FAX : 042-540-1688