大多数日常用例已经转换为标准库中可用的功能。但是,我想知道他们中的一些人是如何在幕后工作的。喜欢std::stoi
背后的实际代码是什么?
答案 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。
我认为你应该可以在你的系统上进行类似的搜索。
祝你好运。