私のC++プログラムでは、文字列があります
string s = "/usr/file.gz";
ここで、.gz
拡張子(ファイル名が何であれ)をチェックして"/usr/file"
のように分割するスクリプトを作成する方法を教えてください。
どうですか:
// Check if the last three characters match the ext.
const std::string ext(".gz");
if ( s != ext &&
s.size() > ext.size() &&
s.substr(s.size() - ext.size()) == ".gz" )
{
// if so then strip them off
s = s.substr(0, s.size() - ext.size());
}
C++ 11を使用できる場合は#include <regex>
を使用できます。C++ 03を使用する場合は、Boost.Regex(またはPCRE)を使用して適切な正規表現を作成し、必要なファイル名の部分。別のアプローチは、パスを適切に解析するためにBoost.Filesystemを使用することです。
void stripExtension(std::string &path)
{
int dot = path.rfind(".gz");
if (dot != std::string::npos)
{
path.resize(dot);
}
}