私の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);
}
}