Как избавиться от строки символов в CString в C ++

Тип CString, о котором я говорю, - это Microsoft .

Я пробовал два метода;

Метод 1) с использованием функций Remove () и Replace (), найденных на веб-сайте msdn, а Visual c ++ говорит 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;");

И я не хочу удалять по одному символу за раз, потому что это избавит от других «а».

По какой-то причине, когда я конвертирую sFooter в std :: string, случайные "amp;" появляются в строке, которой не должно быть ...

Я конвертирую sFooter в std :: string следующим образом:

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

Метод 2) Преобразование CString в std :: string, затем использование erase () и remove (), чтобы избавиться от "amp;" s

#include <string>
#include <algorithm>

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

Но вывод Visual Studio показывает следующее: http://pastebin.com/s6tXQ48N


person minusatwelfth    schedule 01.08.2012    source источник


Ответы (2)


Попробуйте использовать Replace.

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

person Joseph Willcoxson    schedule 01.08.2012

Сообщение об ошибке довольно ясное. Вместо обычных строк вам нужно использовать широкие строки.

sFooter.Remove(L"amp;");

Также согласно документации метод Remove принимает только один символ. Вам нужно будет найти другой способ удалить всю подстроку.

person Mark Ransom    schedule 01.08.2012
comment
Когда я пытаюсь это сделать, под L появляется красная линия, означающая Error:argument of type "const wchar_t*" is incompatible with argument of type "wchar_t". - person minusatwelfth; 01.08.2012