私は2CString s1
つとCString s2
。s1の最後のエントリs2を見つける必要があります。C#LastIndexOfのように、CStringで任意の方法を見つけることができます。私はC++では初心者です。前もって感謝します。
5 に答える
CString
にはそのような機能はありません。あなたはそれを自分で書く必要があります、例えば
int LastIndexOf(const CString& s1, const CString& s2)
{
int found = -1;
int next_pos = 0;
for (;;)
{
next_pos = s1.Find(s2, next_pos);
if (next_pos == -1)
return found;
found = next_pos;
};
}
より最適なアルゴリズムでは、最初に文字列を逆にします。これは演習として残します。
self 関数を実装する必要はありません。std は関数 std::string::find_last_of を提供しています。例えば:
std::string str("c:\windows\winhelp.exe");
unsigned found = str.find_last_of("/\\");
std::cout << " path: " << str.substr(0,found) << '\n';
std::cout << " file: " << str.substr(found+1) << '\n';
path: c:\windows
file: winhelp.exe
CString
ご質問に直接対応する方法はありません。CString::ReverseFind
ただし、 +の組み合わせを使用して、_tcsncmp
最初に部分文字列の最後の文字の次の出現箇所を見つけ、見つかった場合はそこから部分文字列全体を比較できます。
CString は「Microsoft Foundation Class Library」の一部だと思いますが、標準 C++ではありません。ここにメソッドを含む参照があります:
http://msdn.microsoft.com/en-us/library/aa315043%28v=vs.60%29.aspx
それを std::string に直接変換するものは何も見当たりませんが (これにはさらに多くのメソッドがあります)、おそらくそれほど難しくはありません (「CString to std::string」を検索すると、いくつかのもの)。
chars
これらはおそらく関連していますが、標準 C++ に含まれる標準 Cの配列である c-string と混同しないでください。