经典面试题:实现atoi函数
summary
:
这是千年老题,看起来简单,要考虑的问题非常多。
题目
写一个函数atoi,把字符串转化成整数。
分析
转成整数不难,从头遍历,比如字符串1234,求整数的过程为:
result = (((0 * 10 + 1) * 10 + 2) * 10 + 3) * 10 + 4
关键是要考虑特殊情况。 * 传入的字符串头指针为空 * 传入的字符串为空 * 传入的字符串有非数字字符 * 负数 * 溢出
目前,我的处理是,除了负数之外的特殊情况都打印错误信息,异常退出。负数则先按正数 处理,返回的时候加上符号。
代码
::: {.code-include lexer="cpp"} ./string-to-integer.cpp :::
使用了Boost的单元测试框架,链接的时候要加上
-lboost_unit_test_framework 参数。