2023/09/14
C++でエスケープ文字を置換する
c++のstd::stringでは、regex_replace()関数では、正規表現にマッチする文字列を置換することができます。
今回は、これをwindowsで書かれたファイルパスでありがちな、「\\」を「/」に置換する処理を作りました。
単純な処理ですが、知らない人にとってははまりそうかな?
regex_replaceを使う
基本的には、下記のように使います。
#include <regex>
...
std::string path = "aabbcc"
std::string replaced_path = std::regex_replace(path, std::regex("aabb"), "/");
// pathがaabbccなら/ccになる。
エスケープ文字を置換する
結論は、以下のようにします。
std::string path = "C:\\Users\\user-name\\path\\to\\file.fbx"
std::string replaced_path = std::regex_replace(path, std::regex("\\\\"), "/");
“\”を4回繰り返します。
多くのドキュメントでは、”\\”でエスケープと書かれていますが、”\\”だけだと、単に”\”と解釈されてしまうので、”\\\\”で”\\”とします。