C++でStringに特定の文字が含まれているかどうかを判断

1064 ワード

システムがあるタイプのピクチャを自動的に読み込む場合、通常、ファイルのアドレスはStringタイプの文字列に保存され、その場合、そのファイルのタイプが要求されるタイプ(例えば、1枚のピクチャであるかどうかなど)であるかどうかを判断する必要があり、一般的な方法は、そのファイルアドレスに特定のタイプの拡張子(.jpgなど)が含まれているかどうかを判断することである.問題は、String文字列に特定の文字が含まれているかどうかを判断する方法に変換されます.方法の1つは,標準ライブラリ関数strstr()を利用することである.strstr()関数は、ある文字列が別の文字列に最初に現れることを検索します.検索された文字列が見つかった場合、関数は最初に一致した文字列のアドレスを返します.検索された文字列が見つからない場合はNULLを返します.しかしstrstr()関数が受け入れるパラメータはconst char*,Stringのメンバー関数c_である.strはchar*メンバーを取得しますが、char*がconst char*に直接変換できない方法はstrcpy_を使用する必要があります.s()は別のメモリを開き、文字を一つ一つコピーしてstrstr()関数の呼び出しを行います.コードは次の通りです.
ここでstImagePathはStringタイプの変数です.
char* chImagePath = new char[strlen(stImagePath.c_str()) + 1];
strcpy_s(chImagePath,strlen(stImagePath.c_str()) + 1,stImagePath.c_str());
char* pJpg = strstr(chImagePath,".jpg");//             
char* pBmp = strstr(chImagePath,".bmp");
char* pPng = strstr(chImagePath,".tif");
char* pJPG = strstr(chImagePath,".JPG");
if(pJpg==NULL && pBmp==NULL && pPng==NULL && pJPG==NULL)
{
break;
}