std::sting, String, AnsiString转换成DWORD的3种途径

std::sting, String, AnsiString转换成DWORD的3种途径
被坑的够呛,做个记号

方法:1、2系转载
方法3系原创

如果你的数据不会大于0x7fff ffff,可以直接用StrToInt,安全点的方法是StrToIntDef

    // 超出了int的最大表达范围,禁止用int中转
    std::string str("2147483649");
    DWORD num = atoi(str.c_str()); // way - 1,安全性不好
    std::stringstream sstr;
    sstr<<str;
    sstr>>num;                     // way - 2,安全性不好
    sstr.clear();

方法3:

/*******************************************************************************
   字符串转成DWORD,模仿StrToIntDef()其中defalult = 0;
*******************************************************************************/
DWORD StrToDWORDDef(String sDigStr, DWORD dwDef = 0)
{
    return (DWORD) StrToInt64Def(sDigStr, dwDef);  //安全性好,浪费几个始终周期和4字节内存
}

你可能感兴趣的:(std::sting, String, AnsiString转换成DWORD的3种途径)