2

私は2CString s1つとCString s2。s1の最後のエントリs2を見つける必要があります。C#LastIndexOfのように、CStringで任意の方法を見つけることができます。私はC++では初心者です。前もって感謝します。

4

5 に答える 5

4

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;
    };
  }

より最適なアルゴリズムでは、最初に文字列を逆にします。これは演習として残します。

于 2012-08-16T09:15:40.470 に答える
1

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
于 2013-06-13T12:18:19.877 に答える
0

CStringご質問に直接対応する方法はありません。CString::ReverseFindただし、 +の組み合わせを使用して、_tcsncmp最初に部分文字列の最後の文字の次の出現箇所を見つけ、見つかった場合はそこから部分文字列全体を比較できます。

于 2012-08-16T09:14:40.817 に答える
0

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 と混同しないでください。

于 2012-08-16T09:15:21.817 に答える