Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Экранирование &


Автор: ТарасАтавин 18.9.2013, 12:12
Остальные символы сообразил, например, 
Код
while ((Pos=Result.find(L'<'))!=std::numeric_limits<size_t>::max())
 {
  L=Result.length();
  Result=Result.substr(0, Pos)+L"&lt;"+Result.substr(Pos+1, L-Pos-1);
 }
, но если по аналогии сделать 
Код
while ((Pos=Result.find(L'&'))!=std::numeric_limits<size_t>::max())
 {
  L=Result.length();
  Result=Result.substr(0, Pos)+L"&amp"+Result.substr(Pos+1, L-Pos-1);
 }
, то первая замена пройдёт нормально, а уже вторая превратит &amp; в  &amp;amp;.  Как с этим бороться?

Автор: ТарасАтавин 18.9.2013, 13:37
Проблема решена: 
Код
Pos=0;
 while ((Pos=Result.find(L'&', Pos))!=std::numeric_limits<size_t>::max())
 {
  L=Result.length();
  Result=Result.substr(0, Pos)+L"&amp;"+Result.substr(Pos+1, L-Pos-1);
  ++Pos;
 }
, данный символ экранируется первым.

Автор: Amp 18.9.2013, 23:31
Цитата(ТарасАтавин @  18.9.2013,  12:12 Найти цитируемый пост)
std::numeric_limits<size_t>::max()

Не лень набирать-то?

Автор: ТарасАтавин 19.9.2013, 06:27
Переведи.

Автор: Amp 19.9.2013, 10:32
Для этого есть string::npos

Автор: ТарасАтавин 7.10.2013, 13:18
А что такое этот 
Цитата(Amp @  19.9.2013,  10:32 Найти цитируемый пост)
string::npos 
?

Автор: Static 7.10.2013, 13:23
http://www.cplusplus.com/reference/string/string/npos/

Автор: bsa 11.10.2013, 00:28
 smile  smile  smile 
заранее прошу прощения за столь информативный пост

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)