gpt4 book ai didi

c++ - stoi - 设计问题

转载 作者:行者123 更新时间:2023-11-30 00:58:21 27 4
gpt4 key购买 nike

我已经在 my posts 之一中询问过关于 boost::lexical_cast 的替代方案的问题,在许多回复中,我有一个建议 stoi 作为可行的替代方案。
我决定对其进行测试,令我惊讶的是,此函数的第二个参数(描述大小的参数)是指向 size_t 类型的指针,而不是实际的 size_t 类型。对此是否有任何合乎逻辑的解释,以何种方式拥有指向实际对象的指针比对象本身更好(仅在这种特殊情况下,当涉及大小时,我不会本能地用指针分配大小)?

stoi 文档链接:http://msdn.microsoft.com/en-us/library/ee404860.aspx

最佳答案

这是一种拥有可选参数的方式。基本上,如果您有兴趣知道哪个是未转换为数字的第一个字符。如果您对该结果不感兴趣,可以传递 nullptr。

§21.5 [string.conversions]/1 [...] If the function does not throw an exception and idx != 0, the function stores in *idx the index of the first unconverted element of str.

这意味着用作:

int main() {
std::string two{"2 and more contents"};
// I don't care, just want a number:
int i = std::stoi( two, 0, 10 ); // base = 0

std::size_t first_not_converted;
int i = std::stoi( two, &first_not_converted, 10 );

std::cout << "Unconverted string is: " << two.substr( first_not_converted ) << std::endl;
}

通过使用指针,您可以使参数真正可选,如果它是一个输出参数,但需要使用一个引用,但这将需要用户代码创建变量总是,无论他们是否对值(value)感兴趣,所以它不是真正的可选。

关于c++ - stoi - 设计问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6407814/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com