C ++ Какой тип указателя я должен использовать для хранения выходного адреса функции `algorithm`` remove`? - PullRequest
2 голосов
/ 06 августа 2020

Я пытаюсь сохранить адрес, возвращаемый функцией algorithm remove в C ++, в переменной, но мне не удалось его найти. Я пробовал int* и char*. Оба выдавали ошибки.

При использовании Visual Studio CL ошибка: error C2440: '=': cannot convert from '_FwdIt' to 'int *'

При использовании MinGW ошибка: cannot convert '__gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char> >' to 'int*' in assignment

Как мне хранить такой адрес?

Код, который я пробую:

#include <stdio.h>
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

int main (void) {
  string line ("This is an example sentence.");
  int* newEOL;
  newEOL = remove(line.begin(), line.end(), ' ');
  printf("%p\n", newEOL);
}

1 Ответ

5 голосов
/ 06 августа 2020

Как вы думаете, почему это указатель?

Как видно здесь: https://en.cppreference.com/w/cpp/algorithm/remove это итератор, который может быть реализован как указатель, но не обязательно.

Вы можете использовать ключевое слово auto, если не хотите явно указывать тип.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...