я столкнулся с той же проблемой, пытаясь понять разницу. объяснения, которые были даны до сих пор, справедливы на деньги, но я понял их только после того, как увидел пример:
#include <algorithm>
#include <string>
#include <iostream>
#include <cctype>
int main()
{
std::string str1 = "Text with some spaces";
std::string::iterator it = remove(str1.begin(), str1.end(), 't');
std::cout << str1 << std::endl;// prints "Tex wih some spaceses"
for (str1.begin();it != str1.end(); ++it)
{
std::cout << *it; //prints "es"
}
}
, как вы можете видеть, удаление удаляет только нижний регистр 't' до конца строки, возвращая новый итератор в конец новой строки (новая строка - это старая строка до места, где был вставлен удаленный элемент), поэтому, когда вы печатаете итератор, который вы получили из «remove»,
"Text with some spaces"
^ ^removes both 't', then shift all elements forward -1 //what we want to remove
"Text with some spaces"
^ end of string -2 //original state of string
"Tex with some spacess"
^end of string -3 //first 't' removed
"Tex wih some spaceses"
^end of string -4 //second 't' removed
"Tex wih some spaceses"
^new iterator that remove() returned -5 // the state of string after "remove" and without "erase"
, если вы передадите итератор, полученный с шага 5, на «erase ()», он будет знать, что он удалит оттуда до конца строки, переопределив строку в процессе
Возможно, можно создать плагин для браузера для решения подобных задач. OAuth-сервер может ассоциировать токен с идентификатором сеанса на стороне сервера (вероятно, хранить его в дБ). Когда запрос с токеном oauth получен, сервер проверяет, находится ли тот же токен в сеансе.
Обратитесь к OAuth2 «неявному потоку», где сервер авторизации напрямую передает маркер доступа браузеру в хэш-фрагменте URL. Хеш-фрагменты никогда не отправляются на внутренний сервер. Однако «неявный поток» не так защищен, как поток «кода авторизации».