3

私が話しているCStringタイプは、Microsoftのです。

私は2つの方法を試しました。

方法1)msdn WebサイトにあるRemove()およびReplace()関数を使用し、Visualc++は次のように述べています。Error:argument of type "const char*" is incompatible with argument of type "wchar_t"

具体的には私のコードは次のとおりです。

#include <cstring>

CString sTmp= sBody.Mid(nOffset);
CString sFooter= L"https://" + sTmp.Mid(0, nEnd );
sFooter.Remove("amp;");

また、他の「a」が削除されるため、一度に1つの文字を削除したくありません。

何らかの理由で、sFooterをstd :: stringに変換すると、ランダムな「amp;」が文字列に表示されますが、そこにあるべきではありません。

私はsFooterを次のようにstd::stringに変換しています:

CT2CA p (sFooter);
string str (p);

方法2)CStringをstd :: stringに変換してから、erase()とremove()を使用して「amp;」を削除します。

#include <string>
#include <algorithm>

sFooter2.erase(std::remove(sFooter2.begin(), sFooter2.end(), "amp;"), sFooter2.end());

しかし、Visual Studioの出力はこれを示しています:http://pastebin.com/s6tXQ48N

4

2 に答える 2

5

置換を使用してみてください。

sFooter.Replace(_T("&amp;"), _T(""));

于 2012-08-01T03:38:02.413 に答える
0

エラーメッセージはかなり明確です。通常の文字列を使用する代わりに、幅の広い文字列を使用する必要があります。

sFooter.Remove(L"amp;");

また、ドキュメントによるとRemoveメソッドは1文字のみを受け入れます。サブストリング全体を削除する別の方法を見つける必要があります。

于 2012-08-01T02:27:26.260 に答える