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。
我想在得到第一个数字(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。