我在程序中使用std :: stoi()将字符串值转换为整数值时,我注意到它从字符串值“25”返回25的整数值。
这使我感到困惑,因为当字符串以除数字之外的任何内容开头时,invalid_argument会抛出异常。例如,“25”将抛出invalid_exception。基于此,我假设如果整个字符串值不是数字,则抛出异常。我并没有意识到这种情况。例如,“25,543”将返回25。
只有当整个字符串值为数字时,我才会调用std :: stoi(),否则抛出invalid_argument异常。
话虽如此,我想知道为什么它是这样设计的,或者我不明白它是如何完全运作的。如果我要继续得到像这种认识的惊喜,我宁愿不继续使用它。
更新:我查看了cppreference.com上的文档,我没有足够的经验来完全掌握它。我试图对std :: stoi定义进行反向工程,但是它的重点超出了我的经验水平。我发布这个问题的目的是告诉其他人它的功能和了解细节的愿望。