C++标准库string处理惩罚两个函数isdigit()和isxdigit()

    添加时间:2013-8-2 点击量:

    我们经常须要将string类型转换为int、long、double、float类型,cctype头文件供给了转换前的验证函数isdigit()和isxdigit()。经vs2010实验:

    int main()
    
    {
      std::string strDigit="123.35";
      std::string strXDigit="0 x56";
      char szDigit="456.123";
      char szXDigit="0 x57";
      std::locale loc("");
      if (isdigit(szDigit))
      {
         std::cout<<szDigit<<" is digit.\n";
      }
      if (isdigit((strDigit.c_str())))
      {
        std::cout<<strDigit<<" is digit.\n";
      }
      if (isxdigit(szXDigit))
      {
        std::cout<<szXDigit<<" is hex.\n";
       }
      if (isxdigit((strXDigit.c_str())))
      {
        std::cout<<strXDigit<<" is hex.\n";
       }
      return 0;
    }






    法度输出:



    123.35 is digit.



    456.123 is digit.



    0 x56 is hex.



    0 x57 is hex.



    若是不是应用szDigit、szXDigit、(strDigit.c_str())、(strXDigit.c_str()),而是应用szDigit、szXDigit、strDigit.c_str()、strXDigit.c_str(),则不克不及编译成功。



    在vc2012中须要引用locale头文件,用法为



    std::locale loc("");



    isdigit(szDigit,loc);



    然则要用szDigit可以编译经由过程,然则不会获得正确的成果。

    真正的心灵世界会告诉你根本看不见的东西,这东西需要你付出思想和灵魂的劳动去获取,然后它会照亮你的生命,永远照亮你的生命。——王安忆《小说家的十三堂课》
    分享到: