std :: stoi是如何实现的?

时间:2017-02-21 21:09:08

标签: c++

大多数日常用例已经转换为标准库中可用的功能。但是,我想知道他们中的一些人是如何在幕后工作的。喜欢std::stoi背后的实际代码是什么?

2 个答案:

答案 0 :(得分:3)

最直接的方法是调用相应的C函数,在这种情况下strtol,检查发生了什么,如果失败则抛出相应的异常,然后返回结果。

答案 1 :(得分:1)

  

我想知道他们中的一些人是如何在幕后工作的。喜欢什么   std :: stoi背后的实际代码?

我认为您可以通过类似以下的搜索找到“实际”代码:

  • 在Ubuntu上,我的makefile使用:

    创建一个.depends文件

    g ++ - 5 -m64 -O3 -ggdb -std = c ++ 14 -Wall -Wextra -Wshadow -Wnon- virtual-dtor -pedantic -Wcast-align -Wcast-qual -Wconversion -Wpointer-arith -Wunused -Woverloaded-virtual -O0 -M * .cc> .depends

    (我尝试保持此命令的编译器选项与我的正常编译匹配。)

  • 在浏览器中,我看一下

    http://en.cppreference.com/w/cpp/string/basic_string/stol

    识别

    std :: stoi包含在std :: basic_string中(页面顶部)

  • 在我的编辑器中,(或)使用grep,我在.depends文件中搜索“basic_string”

    grep --color -nH -e“basic_string”.depends

    grep在我当前的依赖文件中报告字符串214次 我改变代码时改变了大小。

    一份报告的例子:

    .depends:14105:/usr/include/c++/5/bits/basic_string.h \

  • 在我的编辑器中,我打开指定的文件

    “/ usr / include / c ++ / 5 / bits / basic_string.h”,

    然后搜索“stoi”,它似乎只存在两次。

    这表示编译器的v5。

我认为你应该可以在你的系统上进行类似的搜索。

祝你好运。