std::stod(string, &pos) - &pos 和 only pos 的区别

std::stod(string, &pos) - Difference between &pos and only pos

我想在得到第一个数字(45345.3)后得到下一个字符(+)的位置

为什么这里只有 &pos 有效?首先,我尝试只使用 pos 但它不起作用。

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

它不起作用,因为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> header 中),所以这是从那里保留下来的 use-case。