字符串转换为整数

下面代码仅供本人复习所用,实用性N低,各位飘过吧~~哈哈:>

//
// 字符串转换为整数.
//
 
#include <cstdlib>
#include <iostream>
#include <string>
 
long toInteger(const std::string &str)
{
    bool isNegative = false;
    long result = 0;
    size_t i;
    const size_t length = str.length();
     
    //
    // 跳过非数字或符号的字符.
    //
    for (i = 0; i < length && ('0' > str[i] || '9' < str[i]); ++i)
    {
        //
        // 处理负号.
        //
        if ('-' == str[i] && '0' <= str[i + 1] && '9' >= str[i + 1])
        {
            isNegative = true;
            i++;
            break;
        }
    }
 
    //
    // 处理数字.
    //
    while (i < length && '0' <= str[i] && '9' >= str[i])
    {
        result = 10 * result + (str[i++] - '0');
    }
     
    return true == isNegative ? result * -1 : result;
}
 
int main(void)
{
    std::cout << toInteger("123456") << std::endl;
    std::cout << toInteger("-123456") << std::endl;
    std::cout << toInteger("--123456-") << std::endl;
    std::cout << toInteger("abBsD-123456") << std::endl;
    std::cout << toInteger("abBsD-123456XddeE") << std::endl;
    std::cout << toInteger("abBsD123456XddeE") << std::endl;
    return EXIT_SUCCESS;
}
posted @   Atypiape  阅读(278)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示