CODE $\Sigma$

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回繰り返します。

多くのドキュメントでは、”\\”でエスケープと書かれていますが、”\\”だけだと、単に”\”と解釈されてしまうので、”\\\\”で”\\”とします。