std :: stod (string, & pos) - разница между & pos и только pos - PullRequest
0 голосов
/ 14 апреля 2020

Я хочу получить позицию следующего символа (+) после получения первого числа (45345.3).

Почему здесь работает только &pos? Сначала я попытался использовать только pos, но это не работает.

string term = "45345.3+24";
unsigned int pos = 0;
double number = stod(term, &pos);

1 Ответ

1 голос
/ 14 апреля 2020

Это не работает, потому что объявление stod выглядит следующим образом:

double stod (const string &str, size_t *idx = 0);
double stod (const wstring &str, size_t *idx = 0);

Другими словами, idx является указателем на значение, которое должно получить информация при желании. Таким образом, при передаче значения необходимо, чтобы был указателем, таким как &pos.

Возможно, что он мог использовать ссылку, которая позволила бы вам использовать pos без амперсанда. Однако это исключило бы возможность использования нулевого указателя для указания, что вы не хотите информацию.

, поскольку она в основном смоделирована после исходной функции C strtod (также в заголовке C ++ <cstdlib>), это вариант использования, который был сохранен оттуда.

...